diff --git a/.github/workflows/build_cpp.yml b/.github/workflows/build_cpp.yml index 7a309065b7..5889d9d68e 100644 --- a/.github/workflows/build_cpp.yml +++ b/.github/workflows/build_cpp.yml @@ -30,7 +30,7 @@ defaults: working-directory: dlib/test jobs: - ubuntu-latest-gcc-default-cmake-3-8-ffmpeg5: + ubuntu-latest-gcc-default-cmake-3-17-ffmpeg5: runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v2 @@ -40,18 +40,18 @@ jobs: sudo apt update sudo apt install libwebp-dev make yasm - - name: Cache cmake 3.8.0 + - name: Cache cmake 3.17.0 uses: actions/cache@v3 id: cache-cmake-download with: # cache this folder: - path: ~/cmake-3.8.0-Linux-x86_64 - key: cmake-3.8.0_try3 + path: ~/cmake-3.17.0-Linux-x86_64 + key: cmake-3.17.0_try3 - run: | # Get the minimum version of cmake dlib supports - wget https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.tar.gz - tar -xf cmake-3.8.0-Linux-x86_64.tar.gz -C ~ + wget https://cmake.org/files/v3.17/cmake-3.17.0-Linux-x86_64.tar.gz + tar -xf cmake-3.17.0-Linux-x86_64.tar.gz -C ~ if: steps.cache-cmake-download.outputs.cache-hit != 'true' - name: Cache FFmpeg 5 @@ -76,7 +76,7 @@ jobs: run: | mkdir build cd build - ~/cmake-3.8.0-Linux-x86_64/bin/cmake -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n5.1.3_installation .. + ~/cmake-3.17.0-Linux-x86_64/bin/cmake -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n5.1.3_installation .. - name: Build just tests run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index da92454aab..ca00843f18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(dlib_project) diff --git a/dlib/CMakeLists.txt b/dlib/CMakeLists.txt index 44045ef3c2..e4da4a8bf5 100644 --- a/dlib/CMakeLists.txt +++ b/dlib/CMakeLists.txt @@ -4,7 +4,7 @@ # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) @@ -649,7 +649,7 @@ if (NOT TARGET dlib) if (DLIB_USE_CUDA) - find_package(CUDA 7.5) + find_package(CUDAToolkit QUIET) if (CUDA_VERSION VERSION_GREATER 9.1 AND CMAKE_VERSION VERSION_LESS 3.12.2) # This bit of weirdness is to work around a bug in cmake @@ -657,18 +657,12 @@ if (NOT TARGET dlib) endif() - if (CUDA_FOUND AND MSVC AND NOT CUDA_CUBLAS_LIBRARIES AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "4") + if (CUDAToolkit_FOUND AND MSVC AND NOT TARGET CUDA::cublas AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "4") message(WARNING "You have CUDA installed, but we can't use it unless you put visual studio in 64bit mode.") set(CUDA_FOUND 0) endif() - if (NOT CUDA_CUBLAS_LIBRARIES) - message(STATUS "Found CUDA, but CMake was unable to find the cuBLAS libraries that should be part of every basic CUDA " - "install. Your CUDA install is somehow broken or incomplete. Since cuBLAS is required for dlib to use CUDA we won't use CUDA.") - set(CUDA_FOUND 0) - endif() - - if (CUDA_FOUND) + if (CUDAToolkit_FOUND) # There is some bug in cmake that causes it to mess up the # -std=c++11 option if you let it propagate it to nvcc in some @@ -712,14 +706,25 @@ if (NOT TARGET dlib) include(cmake_utils/test_for_cudnn/find_cudnn.txt) - if (cudnn AND cudnn_include AND NOT DEFINED cuda_test_compile_worked AND NOT DEFINED cudnn_test_compile_worked) + include(CheckLanguage) + check_language(CUDA) + set(cuda_compiler_found OFF) + if (CMAKE_CUDA_COMPILER) + set(cuda_compiler_found ON) + else() + message(STATUS " *** Cannot find CUDA compiler. If you are on windows using Visual Studio, make sure to install 'Visual Studio Integration' in the cuda installer.") + endif() + + if (cudnn AND cudnn_include AND cuda_compiler_found AND NOT DEFINED cuda_test_compile_worked AND NOT DEFINED cudnn_test_compile_worked) # make sure cuda is really working by doing a test compile + enable_language(CUDA) message(STATUS "Building a CUDA test project to see if your compiler is compatible with CUDA...") set(CUDA_TEST_CMAKE_FLAGS "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" "-DCMAKE_INCLUDE_PATH=${CMAKE_INCLUDE_PATH}" - "-DCMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}") + "-DCMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}" + "-DCUDAToolkit_ROOT=${CUDAToolkit_ROOT}") if (NOT MSVC) # see https://github.com/davisking/dlib/issues/363 list(APPEND CUDA_TEST_CMAKE_FLAGS "-DCUDA_HOST_COMPILER=${CUDA_HOST_COMPILER}") @@ -760,24 +765,6 @@ if (NOT TARGET dlib) endif() endif() endif() - - # Find where cuSOLVER is since the FindCUDA cmake package doesn't - # bother to look for it in older versions of cmake. - if (NOT CUDA_cusolver_LIBRARY) - get_filename_component(cuda_blas_path "${CUDA_CUBLAS_LIBRARIES}" DIRECTORY) - find_library(CUDA_cusolver_LIBRARY cusolver HINTS ${cuda_blas_path}) - # CUDA 10.1 doesn't install symbolic links to libcusolver.so in - # the usual place. This is probably a bug in the cuda - # installer. In any case, If we haven't found cusolver yet go - # look in the cuda install folder for it. New versions of cmake - # do this correctly, but older versions need help. - if (NOT CUDA_cusolver_LIBRARY) - find_library(CUDA_cusolver_LIBRARY cusolver HINTS - /usr/local/cuda/lib64/ - ) - endif() - mark_as_advanced(CUDA_cusolver_LIBRARY) - endif() # Also find OpenMP since cuSOLVER needs it. Importantly, we only # look for one to link to if our use of BLAS, specifically the # Intel MKL, hasn't already decided what to use. This is because @@ -800,7 +787,7 @@ if (NOT TARGET dlib) endif() endif() - if (CUDA_FOUND AND cudnn AND cuda_test_compile_worked AND cudnn_test_compile_worked AND cudnn_include) + if (CUDAToolkit_FOUND AND cudnn AND cuda_test_compile_worked AND cudnn_test_compile_worked AND cudnn_include) set(source_files ${source_files} cuda/cuda_dlib.cu cuda/cudnn_dlibapi.cpp @@ -810,11 +797,12 @@ if (NOT TARGET dlib) cuda/cuda_data_ptr.cpp cuda/gpu_data.cpp ) - list (APPEND dlib_needed_private_libraries ${CUDA_CUBLAS_LIBRARIES}) + list (APPEND dlib_needed_private_libraries CUDA::toolkit) + list (APPEND dlib_needed_private_libraries CUDA::cublas) list (APPEND dlib_needed_private_libraries ${cudnn}) - list (APPEND dlib_needed_private_libraries ${CUDA_curand_LIBRARY}) - list (APPEND dlib_needed_private_libraries ${CUDA_cusolver_LIBRARY}) - list (APPEND dlib_needed_private_libraries ${CUDA_CUDART_LIBRARY}) + list (APPEND dlib_needed_private_libraries CUDA::curand) + list (APPEND dlib_needed_private_libraries CUDA::cusolver) + list (APPEND dlib_needed_private_libraries CUDA::cudart) if(openmp_libraries) list (APPEND dlib_needed_private_libraries ${openmp_libraries}) endif() @@ -822,9 +810,9 @@ if (NOT TARGET dlib) include_directories(${cudnn_include}) message(STATUS "Enabling CUDA support for dlib. DLIB WILL USE CUDA, compute capabilities: ${DLIB_CUDA_COMPUTE_CAPABILITIES}") else() - set(DLIB_USE_CUDA OFF CACHE STRING ${DLIB_USE_BLAS_STR} FORCE ) + set(DLIB_USE_CUDA OFF CACHE BOOL ${DLIB_USE_BLAS_STR} FORCE ) toggle_preprocessor_switch(DLIB_USE_CUDA) - if (NOT CUDA_FOUND) + if (NOT CUDAToolkit_FOUND) message(STATUS "DID NOT FIND CUDA") endif() message(STATUS "Disabling CUDA support for dlib. DLIB WILL NOT USE CUDA") @@ -875,15 +863,7 @@ if (NOT TARGET dlib) endif() endif() - # Tell CMake to build dlib via add_library()/cuda_add_library() - if (DLIB_USE_CUDA) - # The old cuda_add_library() command doesn't support CMake's newer dependency - # stuff, so we have to set the include path manually still, which we do here. - include_directories(${dlib_needed_public_includes}) - cuda_add_library(dlib ${source_files} ) - else() - add_library(dlib ${source_files} ) - endif() + add_library(dlib ${source_files} ) endif () ##### end of if NOT DLIB_ISO_CPP_ONLY ########################################################## @@ -917,6 +897,9 @@ if (NOT TARGET dlib) target_compile_options(dlib PRIVATE "-DDLIB_CHECK_FOR_VERSION_MISMATCH=${DLIB_CHECK_FOR_VERSION_MISMATCH}") endif() + if (DLIB_USE_CUDA) + set_target_properties(dlib PROPERTIES CUDA_ARCHITECTURES ${DLIB_CUDA_COMPUTE_CAPABILITIES}) + endif() # Allow the unit tests to ask us to compile the all/source.cpp file just to make sure it compiles. if (DLIB_TEST_COMPILE_ALL_SOURCE_CPP) diff --git a/dlib/cmake b/dlib/cmake index 224ba3a491..4a9d7b3985 100644 --- a/dlib/cmake +++ b/dlib/cmake @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) add_subdirectory(${CMAKE_CURRENT_LIST_DIR} dlib_build) diff --git a/dlib/cmake_utils/check_if_avx_instructions_executable_on_host.cmake b/dlib/cmake_utils/check_if_avx_instructions_executable_on_host.cmake index 4f2cfef933..717812678d 100644 --- a/dlib/cmake_utils/check_if_avx_instructions_executable_on_host.cmake +++ b/dlib/cmake_utils/check_if_avx_instructions_executable_on_host.cmake @@ -1,6 +1,6 @@ # This script checks if your compiler and host processor can generate and then run programs with AVX instructions. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # Don't rerun this script if its already been executed. if (DEFINED AVX_IS_AVAILABLE_ON_HOST) diff --git a/dlib/cmake_utils/check_if_neon_available.cmake b/dlib/cmake_utils/check_if_neon_available.cmake index 895c810b74..6ed6725cac 100644 --- a/dlib/cmake_utils/check_if_neon_available.cmake +++ b/dlib/cmake_utils/check_if_neon_available.cmake @@ -1,6 +1,6 @@ # This script checks if __ARM_NEON__ is defined for your compiler -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # Don't rerun this script if its already been executed. if (DEFINED ARM_NEON_IS_AVAILABLE) diff --git a/dlib/cmake_utils/check_if_sse4_instructions_executable_on_host.cmake b/dlib/cmake_utils/check_if_sse4_instructions_executable_on_host.cmake index c475609970..7fbe182aed 100644 --- a/dlib/cmake_utils/check_if_sse4_instructions_executable_on_host.cmake +++ b/dlib/cmake_utils/check_if_sse4_instructions_executable_on_host.cmake @@ -1,6 +1,6 @@ # This script checks if your compiler and host processor can generate and then run programs with SSE4 instructions. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # Don't rerun this script if its already been executed. if (DEFINED SSE4_IS_AVAILABLE_ON_HOST) diff --git a/dlib/cmake_utils/find_ffmpeg.cmake b/dlib/cmake_utils/find_ffmpeg.cmake index b05955387b..4179013147 100644 --- a/dlib/cmake_utils/find_ffmpeg.cmake +++ b/dlib/cmake_utils/find_ffmpeg.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) message(STATUS "Searching for FFMPEG/LIBAV") find_package(PkgConfig) diff --git a/dlib/cmake_utils/find_libjpeg.cmake b/dlib/cmake_utils/find_libjpeg.cmake index 028217b075..1ae3b07ed7 100644 --- a/dlib/cmake_utils/find_libjpeg.cmake +++ b/dlib/cmake_utils/find_libjpeg.cmake @@ -1,7 +1,7 @@ #This script just runs CMake's built in JPEG finding tool. But it also checks that the #copy of libjpeg that cmake finds actually builds and links. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) if (BUILDING_PYTHON_IN_MSVC) # Never use any system copy of libjpeg when building python in visual studio diff --git a/dlib/cmake_utils/find_libpng.cmake b/dlib/cmake_utils/find_libpng.cmake index 6760739226..87e593c9a6 100644 --- a/dlib/cmake_utils/find_libpng.cmake +++ b/dlib/cmake_utils/find_libpng.cmake @@ -1,7 +1,7 @@ #This script just runs CMake's built in PNG finding tool. But it also checks that the #copy of libpng that cmake finds actually builds and links. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) if (BUILDING_PYTHON_IN_MSVC) # Never use any system copy of libpng when building python in visual studio diff --git a/dlib/cmake_utils/set_compiler_specific_options.cmake b/dlib/cmake_utils/set_compiler_specific_options.cmake index 8093ca6d30..06220effc4 100644 --- a/dlib/cmake_utils/set_compiler_specific_options.cmake +++ b/dlib/cmake_utils/set_compiler_specific_options.cmake @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # Check if we are being built as part of a pybind11 module. diff --git a/dlib/cmake_utils/tell_visual_studio_to_use_static_runtime.cmake b/dlib/cmake_utils/tell_visual_studio_to_use_static_runtime.cmake index 80122d8018..0d83f932bf 100644 --- a/dlib/cmake_utils/tell_visual_studio_to_use_static_runtime.cmake +++ b/dlib/cmake_utils/tell_visual_studio_to_use_static_runtime.cmake @@ -2,7 +2,7 @@ # Including this cmake script into your cmake project will cause visual studio # to build your project against the static C runtime. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) if (MSVC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") option (DLIB_FORCE_MSVC_STATIC_RUNTIME "use static runtime" ON) diff --git a/dlib/cmake_utils/test_for_avx/CMakeLists.txt b/dlib/cmake_utils/test_for_avx/CMakeLists.txt index 10890153cf..a19ca62bf9 100644 --- a/dlib/cmake_utils/test_for_avx/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_avx/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(avx_test) set(USE_AVX_INSTRUCTIONS ON CACHE BOOL "Use AVX instructions") diff --git a/dlib/cmake_utils/test_for_cuda/CMakeLists.txt b/dlib/cmake_utils/test_for_cuda/CMakeLists.txt index 8b6cd7e7b0..f0a0fd0b00 100644 --- a/dlib/cmake_utils/test_for_cuda/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_cuda/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(cuda_test) include_directories(../../cuda) @@ -7,8 +7,9 @@ add_definitions(-DDLIB_USE_CUDA) # Override the FindCUDA.cmake setting to avoid duplication of host flags if using a toolchain: option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" OFF) -find_package(CUDA 7.5 REQUIRED) +find_package(CUDAToolkit 7.5 REQUIRED) set(CUDA_HOST_COMPILATION_CPP ON) list(APPEND CUDA_NVCC_FLAGS "-arch=sm_50;-std=c++14;-D__STRICT_ANSI__;-D_MWAITXINTRIN_H_INCLUDED;-D_FORCE_INLINES") -cuda_add_library(cuda_test STATIC cuda_test.cu ) +enable_language(CUDA) +add_library(cuda_test STATIC cuda_test.cu ) diff --git a/dlib/cmake_utils/test_for_cudnn/CMakeLists.txt b/dlib/cmake_utils/test_for_cudnn/CMakeLists.txt index 0ca0f6b6a2..c1a12abafe 100644 --- a/dlib/cmake_utils/test_for_cudnn/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_cudnn/CMakeLists.txt @@ -1,10 +1,10 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(cudnn_test) # Override the FindCUDA.cmake setting to avoid duplication of host flags if using a toolchain: option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" OFF) -find_package(CUDA 7.5 REQUIRED) +find_package(CUDAToolkit 7.5 REQUIRED) set(CUDA_HOST_COMPILATION_CPP ON) list(APPEND CUDA_NVCC_FLAGS "-arch=sm_50;-std=c++14;-D__STRICT_ANSI__") add_definitions(-DDLIB_USE_CUDA) @@ -13,6 +13,9 @@ include(find_cudnn.txt) if (cudnn_include AND cudnn) include_directories(${cudnn_include}) - cuda_add_library(cudnn_test STATIC ../../cuda/cudnn_dlibapi.cpp ${cudnn} ) + enable_language(CUDA) + add_library(cudnn_test STATIC ../../cuda/cudnn_dlibapi.cpp ${cudnn} ) target_compile_features(cudnn_test PUBLIC cxx_std_14) + target_link_libraries(cudnn_test PRIVATE CUDA::toolkit) + target_link_libraries(cudnn_test PRIVATE CUDA::cudart) endif() diff --git a/dlib/cmake_utils/test_for_libjpeg/CMakeLists.txt b/dlib/cmake_utils/test_for_libjpeg/CMakeLists.txt index a3c6910dbe..db740bca50 100644 --- a/dlib/cmake_utils/test_for_libjpeg/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_libjpeg/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(test_if_libjpeg_is_broken) find_package(JPEG) diff --git a/dlib/cmake_utils/test_for_libjxl/CMakeLists.txt b/dlib/cmake_utils/test_for_libjxl/CMakeLists.txt index c91b5d8ff6..b89e46fcbb 100644 --- a/dlib/cmake_utils/test_for_libjxl/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_libjxl/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(test_if_libjxl_is_broken) include_directories(${JXL_INCLUDE_DIR}) diff --git a/dlib/cmake_utils/test_for_libpng/CMakeLists.txt b/dlib/cmake_utils/test_for_libpng/CMakeLists.txt index 0be9206132..94ce87826d 100644 --- a/dlib/cmake_utils/test_for_libpng/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_libpng/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(test_if_libpng_is_broken) find_package(PNG) diff --git a/dlib/cmake_utils/test_for_libwebp/CMakeLists.txt b/dlib/cmake_utils/test_for_libwebp/CMakeLists.txt index 9ea3ed10ea..83c4502638 100644 --- a/dlib/cmake_utils/test_for_libwebp/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_libwebp/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(test_if_libwebp_is_broken) include_directories(${WEBP_INCLUDE_DIR}) diff --git a/dlib/cmake_utils/test_for_neon/CMakeLists.txt b/dlib/cmake_utils/test_for_neon/CMakeLists.txt index b9c6e51e8a..c27d339723 100644 --- a/dlib/cmake_utils/test_for_neon/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_neon/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(neon_test) add_library(neon_test STATIC neon_test.cpp ) diff --git a/dlib/cmake_utils/test_for_sse4/CMakeLists.txt b/dlib/cmake_utils/test_for_sse4/CMakeLists.txt index 4cd4e95cef..e01aeafd4d 100644 --- a/dlib/cmake_utils/test_for_sse4/CMakeLists.txt +++ b/dlib/cmake_utils/test_for_sse4/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(sse4_test) set(USE_SSE4_INSTRUCTIONS ON CACHE BOOL "Use SSE4 instructions") diff --git a/dlib/external/cblas/CMakeLists.txt b/dlib/external/cblas/CMakeLists.txt index c5379dd9fa..78ade59f3c 100644 --- a/dlib/external/cblas/CMakeLists.txt +++ b/dlib/external/cblas/CMakeLists.txt @@ -4,7 +4,7 @@ # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project(cblas) diff --git a/dlib/external/pybind11/CMakeLists.txt b/dlib/external/pybind11/CMakeLists.txt index 7db1bf668f..9156a623df 100644 --- a/dlib/external/pybind11/CMakeLists.txt +++ b/dlib/external/pybind11/CMakeLists.txt @@ -77,9 +77,9 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) if(OSX AND CMAKE_VERSION VERSION_LESS 3.7) # Bug in macOS CMake < 3.7 is unable to download catch message(WARNING "CMAKE 3.7+ needed on macOS to download catch, and newer HIGHLY recommended") - elseif(WINDOWS AND CMAKE_VERSION VERSION_LESS 3.8) - # Only tested with 3.8+ in CI. - message(WARNING "CMAKE 3.8+ tested on Windows, previous versions untested") + elseif(WINDOWS AND CMAKE_VERSION VERSION_LESS 3.17) + # Only tested with 3.8ยด17+ in CI. + message(WARNING "CMAKE 3.17+ tested on Windows, previous versions untested") endif() message(STATUS "CMake ${CMAKE_VERSION}") diff --git a/dlib/java/CMakeLists.txt b/dlib/java/CMakeLists.txt index b31bfad0d4..c87258ccc8 100644 --- a/dlib/java/CMakeLists.txt +++ b/dlib/java/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) project (myproject) set(java_package_name net.dlib) set(source_files diff --git a/dlib/java/cmake_swig_jni b/dlib/java/cmake_swig_jni index 48f960f41f..d4127aa918 100644 --- a/dlib/java/cmake_swig_jni +++ b/dlib/java/cmake_swig_jni @@ -2,7 +2,7 @@ # it by defining some CMake variables and then include(cmake_swig_jni). You # would make a CMakeLists.txt file that looks like the following: # -# cmake_minimum_required (VERSION 3.8.0) +# cmake_minimum_required (VERSION 3.17.0) # project (example) # set(java_package_name "org.mycompany") # set(source_files @@ -40,7 +40,7 @@ ################################################################################ ################################################################################ -cmake_minimum_required (VERSION 3.8.0) +cmake_minimum_required (VERSION 3.17.0) # This block of code tries to figure out what the JAVA_HOME environment # variable should be by looking at the folder that contains the java diff --git a/dlib/matlab/CMakeLists.txt b/dlib/matlab/CMakeLists.txt index 2dee98c60c..b9a5a12289 100644 --- a/dlib/matlab/CMakeLists.txt +++ b/dlib/matlab/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) PROJECT(mex_functions) diff --git a/dlib/matlab/cmake_mex_wrapper b/dlib/matlab/cmake_mex_wrapper index 6cbc27afc6..0621b7dc6a 100644 --- a/dlib/matlab/cmake_mex_wrapper +++ b/dlib/matlab/cmake_mex_wrapper @@ -3,7 +3,7 @@ # that additional library dependencies can be added like this: add_mex_function(name lib1 dlib libetc). # That is, just add more libraries after the name and they will be build into the mex file. -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) set(BUILDING_MATLAB_MEX_FILE true) set(CMAKE_POSITION_INDEPENDENT_CODE True) diff --git a/dlib/test/CMakeLists.txt b/dlib/test/CMakeLists.txt index 4154fa0a3b..bb06619b3d 100644 --- a/dlib/test/CMakeLists.txt +++ b/dlib/test/CMakeLists.txt @@ -3,7 +3,7 @@ # information about it at http://www.cmake.org # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # create a variable called target_name and set it to the string "dtest" set (target_name dtest) @@ -213,10 +213,8 @@ else() # basically Clang # This is for the comment in face_detection_ex.cpp that says "faces/*.jpg" add_compile_options(-Wno-comment) - if(${CMAKE_VERSION} VERSION_GREATER "3.8.0") - # strip debug symbols to make the binary smaller - target_link_options(${target_name} PRIVATE $<$:-s>) - endif() + # strip debug symbols to make the binary smaller + target_link_options(${target_name} PRIVATE $<$:-s>) endif() diff --git a/dlib/test/blas_bindings/CMakeLists.txt b/dlib/test/blas_bindings/CMakeLists.txt index f9c0b05a12..883d237bd4 100644 --- a/dlib/test/blas_bindings/CMakeLists.txt +++ b/dlib/test/blas_bindings/CMakeLists.txt @@ -3,7 +3,7 @@ # information about it at http://www.cmake.org # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # This variable contains a list of all the tests we are building # into the regression test suite. diff --git a/dlib/test/tools/CMakeLists.txt b/dlib/test/tools/CMakeLists.txt index 80371d6d84..f3db1a0cb2 100644 --- a/dlib/test/tools/CMakeLists.txt +++ b/dlib/test/tools/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) add_subdirectory(../../../tools/imglab imglab_build) add_subdirectory(../../../tools/htmlify htmlify_build) diff --git a/docs/docs/release_notes.xml b/docs/docs/release_notes.xml index 97cb945486..38b3304e35 100644 --- a/docs/docs/release_notes.xml +++ b/docs/docs/release_notes.xml @@ -58,7 +58,7 @@ New Features and Improvements: - FFMPEG wrappers: dlib::ffmpeg::decoder and dlib::ffmpeg::demuxer (PR #2707) Non-Backwards Compatible Changes: - - Dlib now requires C++14 and at least CMake version 3.8.0. + - Dlib now requires C++14 and at least CMake version 3.17.0. Bug fixes: - Various adjustments to avoid errors on unusual platforms of system configurations. diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 61af199179..e3357ab44b 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -32,7 +32,7 @@ # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # Every project needs a name. We call this the "examples" project. project(examples) diff --git a/tools/archive/CMakeLists.txt b/tools/archive/CMakeLists.txt index 796e469852..1753969e5e 100644 --- a/tools/archive/CMakeLists.txt +++ b/tools/archive/CMakeLists.txt @@ -4,7 +4,7 @@ # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) PROJECT(archive) diff --git a/tools/convert_dlib_nets_to_caffe/CMakeLists.txt b/tools/convert_dlib_nets_to_caffe/CMakeLists.txt index 2325366fe0..e043786042 100644 --- a/tools/convert_dlib_nets_to_caffe/CMakeLists.txt +++ b/tools/convert_dlib_nets_to_caffe/CMakeLists.txt @@ -3,7 +3,7 @@ # information about it at http://www.cmake.org # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) set (target_name dtoc) diff --git a/tools/htmlify/CMakeLists.txt b/tools/htmlify/CMakeLists.txt index 35f327f275..8d8644fc18 100644 --- a/tools/htmlify/CMakeLists.txt +++ b/tools/htmlify/CMakeLists.txt @@ -3,7 +3,7 @@ # information about it at http://www.cmake.org # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # create a variable called target_name and set it to the string "htmlify" set (target_name htmlify) diff --git a/tools/imglab/CMakeLists.txt b/tools/imglab/CMakeLists.txt index 5fb1331d15..316a879cd1 100644 --- a/tools/imglab/CMakeLists.txt +++ b/tools/imglab/CMakeLists.txt @@ -3,7 +3,7 @@ # information about it at http://www.cmake.org # -cmake_minimum_required(VERSION 3.8.0) +cmake_minimum_required(VERSION 3.17.0) # create a variable called target_name and set it to the string "imglab" set (target_name imglab) diff --git a/tools/python/CMakeLists.txt b/tools/python/CMakeLists.txt index 8309d5fb93..97759bd26b 100644 --- a/tools/python/CMakeLists.txt +++ b/tools/python/CMakeLists.txt @@ -1,5 +1,5 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0) +CMAKE_MINIMUM_REQUIRED(VERSION 3.17.0) if (WIN32 AND NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio") message(FATAL_ERROR "\n"