From d4688e6474dcd59c1d66736b744a8049f386a90b Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 23 Mar 2018 12:07:10 +0300 Subject: [PATCH] cmake: require C++11 and CMake 3.5.1+ --- CMakeLists.txt | 4 ---- cmake/OpenCVDetectCXXCompiler.cmake | 16 ++++++++-------- cmake/OpenCVMinDepVersions.cmake | 2 +- doc/tutorials/dnn/dnn_halide/dnn_halide.markdown | 2 -- samples/CMakeLists.txt | 6 +++++- samples/cpp/example_cmake/CMakeLists.txt | 11 +++++------ 6 files changed, 19 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc7b72c..d760804 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,7 +149,6 @@ endif() # ---------------------------------------------------------------------------- # Detect compiler and target platform architecture # ---------------------------------------------------------------------------- -OCV_OPTION(ENABLE_CXX11 "Enable C++11 compilation mode" "${OPENCV_CXX11}") include(cmake/OpenCVDetectCXXCompiler.cmake) ocv_cmake_hook(POST_DETECT_COMPILER) @@ -1018,9 +1017,6 @@ string(STRIP "${OPENCV_COMPILER_STR}" OPENCV_COMPILER_STR) status("") status(" C/C++:") status(" Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO) -if(ENABLE_CXX11 OR HAVE_CXX11) -status(" C++11:" HAVE_CXX11 THEN YES ELSE NO) -endif() status(" C++ Compiler:" ${OPENCV_COMPILER_STR}) status(" C++ flags (Release):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}) status(" C++ flags (Debug):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}) diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake index 8c9ff03..04a1f48 100644 --- a/cmake/OpenCVDetectCXXCompiler.cmake +++ b/cmake/OpenCVDetectCXXCompiler.cmake @@ -166,14 +166,11 @@ if(CMAKE_VERSION VERSION_LESS "3.1") endforeach() endif() -if(ENABLE_CXX11) - #cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED TRUE) - set(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++11 instead of -std=gnu++11 - if(CMAKE_CXX11_COMPILE_FEATURES) - set(HAVE_CXX11 ON) - endif() +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +set(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++11 instead of -std=gnu++11 +if(CMAKE_CXX11_COMPILE_FEATURES) + set(HAVE_CXX11 ON) endif() if(NOT HAVE_CXX11) ocv_check_compiler_flag(CXX "" HAVE_CXX11 "${OpenCV_SOURCE_DIR}/cmake/checks/cxx11.cpp") @@ -185,3 +182,6 @@ if(NOT HAVE_CXX11) endif() endif() endif() +if(NOT HAVE_CXX11) + message(FATAL_ERROR "OpenCV 4.x requires C++11") +endif() diff --git a/cmake/OpenCVMinDepVersions.cmake b/cmake/OpenCVMinDepVersions.cmake index d2c5b7c..f08fa57 100644 --- a/cmake/OpenCVMinDepVersions.cmake +++ b/cmake/OpenCVMinDepVersions.cmake @@ -1,4 +1,4 @@ -set(MIN_VER_CMAKE 2.8.12.2) +set(MIN_VER_CMAKE 3.5.1) set(MIN_VER_CUDA 6.5) set(MIN_VER_PYTHON2 2.6) set(MIN_VER_PYTHON3 3.2) diff --git a/doc/tutorials/dnn/dnn_halide/dnn_halide.markdown b/doc/tutorials/dnn/dnn_halide/dnn_halide.markdown index 7271d08..fe82f05 100644 --- a/doc/tutorials/dnn/dnn_halide/dnn_halide.markdown +++ b/doc/tutorials/dnn/dnn_halide/dnn_halide.markdown @@ -68,8 +68,6 @@ MSBuild.exe /m:4 /t:Build /p:Configuration=Release .\\ALL_BUILD.vcxproj ## Build OpenCV with Halide backend When you build OpenCV add the following configuration flags: -- `ENABLE_CXX11` - enable C++11 standard - - `WITH_HALIDE` - enable Halide linkage - `HALIDE_ROOT_DIR` - path to Halide build directory diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 45dae6a..6ac1dea 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -81,7 +81,11 @@ else() # Standalone mode # #=================================================================================================== -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.1) + +# Enable C++11 +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) project(samples C CXX) option(BUILD_EXAMPLES "Build samples" ON) diff --git a/samples/cpp/example_cmake/CMakeLists.txt b/samples/cpp/example_cmake/CMakeLists.txt index 00c1687..f7c5b6b 100644 --- a/samples/cpp/example_cmake/CMakeLists.txt +++ b/samples/cpp/example_cmake/CMakeLists.txt @@ -1,5 +1,9 @@ # cmake needs this line -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.1) + +# Enable C++11 +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) # Define project name project(opencv_example_project) @@ -18,11 +22,6 @@ message(STATUS " version: ${OpenCV_VERSION}") message(STATUS " libraries: ${OpenCV_LIBS}") message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}") -if(CMAKE_VERSION VERSION_LESS "2.8.11") - # Add OpenCV headers location to your include paths - include_directories(${OpenCV_INCLUDE_DIRS}) -endif() - # Declare the executable target built from your sources add_executable(opencv_example example.cpp) -- 2.7.4