From c373fb9c68ab81e45a342bb02d6b5575704ced41 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Thu, 12 Mar 2026 16:58:17 +0800 Subject: [PATCH] CMake: Version compatibility fixes --- Project/CMake/CMakeLists.txt | 34 ++++++++++++--------- Project/CMake/Modules/EnableLatestCXX.cmake | 3 ++ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Project/CMake/CMakeLists.txt b/Project/CMake/CMakeLists.txt index 9a82b3f..bdb2ca2 100644 --- a/Project/CMake/CMakeLists.txt +++ b/Project/CMake/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5.0...3.31) +cmake_minimum_required(VERSION 3.5.0...4.3.0) project(ZenLib) @@ -40,19 +40,23 @@ set(LIB_INSTALL_DIR "${CMAKE_INSTALL_FULL_LIBDIR}" CACHE STRING "Directory where set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}" CACHE PATH "The directory the headers are installed in") if(MSVC) - add_compile_options(/GS /W3 /guard:cf /sdl) - add_link_options(/guard:cf) - if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL ARM64) - add_compile_options(/guard:ehcont /guard:signret) - add_link_options(/guard:ehcont /guard:delayloadsignret) - endif() - if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL x64) - add_compile_options(/guard:ehcont) - add_link_options(/guard:ehcont /CETCOMPAT) - endif() - if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL X86) - add_compile_options() - add_link_options(/CETCOMPAT) + if(NOT "${CMAKE_VERSION}" VERSION_LESS "3.13") + add_compile_options(/GS /W3 /guard:cf /sdl) + add_link_options(/guard:cf) + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL ARM64) + add_compile_options(/guard:ehcont /guard:signret) + add_link_options(/guard:ehcont /guard:delayloadsignret) + endif() + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL x64) + add_compile_options(/guard:ehcont) + add_link_options(/guard:ehcont /CETCOMPAT) + endif() + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL X86) + add_compile_options() + add_link_options(/CETCOMPAT) + endif() + else() + message(WARNING "CMake < 3.13: Compiler/linker security mitigation flags for MSVC are not automatically added.") endif() endif() @@ -142,7 +146,7 @@ else() set(ZenLib_Unicode "no") endif() -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16") +if(NOT "${CMAKE_VERSION}" VERSION_LESS "3.16") target_precompile_headers(zen PRIVATE "${ZenLib_SOURCES_PATH}/ZenLib/PreComp.h") endif() diff --git a/Project/CMake/Modules/EnableLatestCXX.cmake b/Project/CMake/Modules/EnableLatestCXX.cmake index 0d9a768..0f7f0e6 100644 --- a/Project/CMake/Modules/EnableLatestCXX.cmake +++ b/Project/CMake/Modules/EnableLatestCXX.cmake @@ -1,5 +1,6 @@ function(enable_latest_cxx target) +if(NOT "${CMAKE_VERSION}" VERSION_LESS "3.8") set_target_properties(${target} PROPERTIES CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF @@ -23,4 +24,6 @@ function(enable_latest_cxx target) # Unsupported C++ version message(FATAL_ERROR "Compiler ${CMAKE_CXX_COMPILER_ID} does not support C++11 or newer.") +endif() + endfunction()