From 8347a300849222838d03805ad9f8e69c65810c88 Mon Sep 17 00:00:00 2001 From: Mark Callow Date: Sat, 14 Sep 2024 17:39:33 +0900 Subject: [PATCH] Always use same method to set language version. That method is target_compile_features. --- CMakeLists.txt | 8 +++++--- tests/ktxdiff/CMakeLists.txt | 7 +++---- tests/streamtests/CMakeLists.txt | 13 ++++++------- tests/tests.cmake | 13 ++++++------- tools/imageio/CMakeLists.txt | 7 ++++--- tools/ktx/CMakeLists.txt | 8 ++++++-- tools/ktx2check/CMakeLists.txt | 20 ++++++++++++-------- tools/ktxsc/CMakeLists.txt | 13 ++++++------- tools/toktx/CMakeLists.txt | 13 ------------- 9 files changed, 48 insertions(+), 54 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 398c4cf306..96dee7e63b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -523,9 +523,6 @@ macro(common_libktx_settings target enable_write library_type) VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "YES" - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED YES - ) if(APPLE_LOCKED_OS) set_target_properties(${target} PROPERTIES @@ -1094,6 +1091,11 @@ target_include_directories( PUBLIC utils ) +target_compile_features( + objUtil +PUBLIC + cxx_std_11 +) # In C++ apps that use statically linked Libraries all compilatiom units must # be compiled with matching symbol visibility settings to avoid warnings from diff --git a/tests/ktxdiff/CMakeLists.txt b/tests/ktxdiff/CMakeLists.txt index a594132af3..8a7dd5cca6 100644 --- a/tests/ktxdiff/CMakeLists.txt +++ b/tests/ktxdiff/CMakeLists.txt @@ -7,11 +7,10 @@ add_executable(ktxdiff ktxdiff_main.cpp ) -set_target_properties( +target_compile_features( ktxdiff - PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES +PUBLIC + cxx_std_17 ) target_include_directories( diff --git a/tests/streamtests/CMakeLists.txt b/tests/streamtests/CMakeLists.txt index 2e42064d61..c2773f471e 100644 --- a/tests/streamtests/CMakeLists.txt +++ b/tests/streamtests/CMakeLists.txt @@ -7,6 +7,12 @@ add_executable( streamtests set_test_properties(streamtests) set_code_sign(streamtests) +target_compile_features( + streamtests +PUBLIC + # C++14 for std::make_unique on AppleClang and Linux GCC + cxx_std_14 +) target_include_directories( streamtests PRIVATE @@ -15,13 +21,6 @@ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../lib # Just for gl_format.h ) -set_target_properties( - streamtests PROPERTIES - # Force C++14 (for std::make_unique on AppleClang and Linux GCC) - CXX_STANDARD 14 - CXX_STANDARD_REQUIRED YES -) - target_link_libraries( streamtests gtest diff --git a/tests/tests.cmake b/tests/tests.cmake index 9915bb958f..741686c9ca 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -43,6 +43,12 @@ add_executable( unittests set_test_properties(unittests) set_code_sign(unittests) +target_compile_features( + unittests +PUBLIC + cxx_std_17 +) + target_include_directories( unittests PRIVATE @@ -68,13 +74,6 @@ target_link_libraries( ${CMAKE_THREAD_LIBS_INIT} ) -set_target_properties( - unittests - PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES -) - add_executable( texturetests texturetests/texturetests.cc unittests/wthelper.h diff --git a/tools/imageio/CMakeLists.txt b/tools/imageio/CMakeLists.txt index a5ad56ec8b..f282637499 100644 --- a/tools/imageio/CMakeLists.txt +++ b/tools/imageio/CMakeLists.txt @@ -67,10 +67,11 @@ PRIVATE $ ) +target_compile_features(imageio PUBLIC cxx_std_17) + +target_link_libraries(imageio fmt::fmt) + set_target_properties(imageio PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES CXX_VISIBILITY_PRESET ${STATIC_APP_LIB_SYMBOL_VISIBILITY} ) -target_link_libraries(imageio fmt::fmt) diff --git a/tools/ktx/CMakeLists.txt b/tools/ktx/CMakeLists.txt index 26985a4665..4f47d8ef9e 100644 --- a/tools/ktx/CMakeLists.txt +++ b/tools/ktx/CMakeLists.txt @@ -39,8 +39,6 @@ set_target_properties( PROPERTIES OUTPUT_NAME ktx PDB_NAME ktxtools # Avoid conflict with libktx's .pdb. - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES ) target_include_directories( @@ -77,5 +75,11 @@ PRIVATE $ ) +target_compile_features( + ktxtools +PUBLIC + cxx_std_17 +) + set_tool_properties(ktxtools) set_code_sign(ktxtools) diff --git a/tools/ktx2check/CMakeLists.txt b/tools/ktx2check/CMakeLists.txt index dcd5ec21e0..d6eee2d87f 100644 --- a/tools/ktx2check/CMakeLists.txt +++ b/tools/ktx2check/CMakeLists.txt @@ -6,6 +6,18 @@ add_executable( ktx2check ) create_version_header( tools/ktx2check ktx2check ) +set_target_properties( + ktx2check PROPERTIES + CXX_VISIBILITY_PRESET ${STATIC_APP_LIB_SYMBOL_VISIBILITY} +) + +target_compile_features( + ktx2check +PUBLIC + # C++14 for std::make_unique on AppleClang and Linux GCC + cxx_std_14 +) + target_include_directories( ktx2check PRIVATE @@ -16,14 +28,6 @@ PRIVATE ${PROJECT_SOURCE_DIR}/other_include ) -set_target_properties( - ktx2check PROPERTIES - CXX_VISIBILITY_PRESET ${STATIC_APP_LIB_SYMBOL_VISIBILITY} - # Force C++14 (for std::make_unique on AppleClang and Linux GCC) - CXX_STANDARD 14 - CXX_STANDARD_REQUIRED YES -) - target_link_libraries( ktx2check ktx diff --git a/tools/ktxsc/CMakeLists.txt b/tools/ktxsc/CMakeLists.txt index 3dcb748b61..3e0feb18ce 100644 --- a/tools/ktxsc/CMakeLists.txt +++ b/tools/ktxsc/CMakeLists.txt @@ -6,6 +6,12 @@ add_executable( ktxsc ) create_version_header( tools/ktxsc ktxsc ) +target_compile_features( + ktxsc +PUBLIC + cxx_std_17 +) + target_include_directories( ktxsc PRIVATE @@ -22,12 +28,5 @@ target_link_libraries( objUtil ) -set_target_properties( - ktxsc - PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES -) - set_tool_properties(ktxsc) set_code_sign(ktxsc) diff --git a/tools/toktx/CMakeLists.txt b/tools/toktx/CMakeLists.txt index 7ad76518ba..f2b8d7adeb 100644 --- a/tools/toktx/CMakeLists.txt +++ b/tools/toktx/CMakeLists.txt @@ -32,25 +32,12 @@ target_link_libraries( objUtil ) -set_target_properties( - toktx - PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES -) - target_compile_definitions( toktx PRIVATE $ ) -# The tools, except ktx2check which explicitly chooses c++14, are somehow -# being set to use the c++11 dialect. Libraries and other targets are not. -# Despite searching every CMakeLists.txt and .cmake file in the project, -# I've been unable to find where this is being set. As toktx needs c++11 -# (at least), explicitly set it here, a precaution against the mysterious -# setting disappearing. target_compile_features(toktx PUBLIC cxx_std_11) set_tool_properties(toktx)