1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

build: transition to C++17, minor changes in documentation

This commit is contained in:
Maksim Shabunin
2024-10-10 18:28:43 +03:00
parent 8e55659afe
commit d223e796f5
14 changed files with 73 additions and 330 deletions
+26 -23
View File
@@ -197,38 +197,41 @@ elseif(MINGW)
endif()
endif()
# Fix handling of duplicated files in the same static library:
# https://public.kitware.com/Bug/view.php?id=14874
if(CMAKE_VERSION VERSION_LESS "3.1")
foreach(var CMAKE_C_ARCHIVE_APPEND CMAKE_CXX_ARCHIVE_APPEND)
if(${var} MATCHES "^<CMAKE_AR> r")
string(REPLACE "<CMAKE_AR> r" "<CMAKE_AR> q" ${var} "${${var}}")
endif()
endforeach()
endif()
if(NOT OPENCV_SKIP_CMAKE_CXX_STANDARD)
ocv_update(CMAKE_CXX_STANDARD 11)
ocv_update(CMAKE_CXX_STANDARD 17)
ocv_update(CMAKE_CXX_STANDARD_REQUIRED TRUE)
ocv_update(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++11 instead of -std=gnu++11
if(CMAKE_CXX11_COMPILE_FEATURES)
ocv_update(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++17 instead of -std=gnu++17
if("cxx_std_11" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
set(HAVE_CXX11 ON)
endif()
endif()
if(NOT HAVE_CXX11)
ocv_check_compiler_flag(CXX "" HAVE_CXX11 "${OpenCV_SOURCE_DIR}/cmake/checks/cxx11.cpp")
if(NOT HAVE_CXX11)
ocv_check_compiler_flag(CXX "-std=c++11" HAVE_STD_CXX11 "${OpenCV_SOURCE_DIR}/cmake/checks/cxx11.cpp")
if(HAVE_STD_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(HAVE_CXX11 ON)
endif()
if("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
set(HAVE_CXX17 ON)
endif()
endif()
if(NOT HAVE_CXX11)
message(FATAL_ERROR "OpenCV 4.x requires C++11")
message(WARNING "OpenCV 5.x requires C++11 support, but it was not detected. Your compilation may fail.")
endif()
if(NOT HAVE_CXX17)
message(WARNING "OpenCV 5.x requires C++17 support, but it was not detected. Your compilation may fail.")
endif()
# Debian 10 - GCC 8.3.0
if(CV_GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8)
message(WARNING "OpenCV requires GCC >= 8.x (detected ${CMAKE_CXX_COMPILER_VERSION}). Your compilation may fail.")
endif()
# Debian 10 - Clang 7.0
if(CV_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
message(WARNING "OpenCV requires LLVM/Clang >= 7.x (detected ${CMAKE_CXX_COMPILER_VERSION}). Your compilation may fail.")
endif()
# Visual Studio 2017 15.7
if(MSVC AND MSVC_VERSION LESS 1914)
message(WARNING "OpenCV requires MSVC >= 2017 15.7 / 1914 (detected ${CMAKE_CXX_COMPILER_VERSION} / ${MSVC_VERSION}). Your compilation may fail.")
endif()
# TODO: check other known compilers versions
set(__OPENCV_ENABLE_ATOMIC_LONG_LONG OFF)
if(HAVE_CXX11 AND (X86 OR X86_64))
+2 -1
View File
@@ -1,5 +1,6 @@
if(NOT DEFINED MIN_VER_CMAKE)
set(MIN_VER_CMAKE 3.7)
set(MIN_VER_CMAKE 3.13) # Debian 10
# set(MIN_VER_CMAKE 3.10) # Visual Studio 2017 15.7
endif()
set(MIN_VER_CUDA 6.5)
set(MIN_VER_CUDNN 7.5)