diff --git a/CMakeLists.txt b/CMakeLists.txt index 9136e61fe9ba266f0ad52c2b5424a76310b5e8f5..ef48ac0dcc0856a7d19595c6b793cb313bb5d934 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,10 +25,17 @@ SOFTWARE. cmake_minimum_required(VERSION 3.25) -# If CMake >=3.24 is used, set policies up to v3.24 to NEW -# if (NOT ${CMAKE_VERSION} VERSION_LESS 3.24) -# cmake_policy(VERSION 3.24) -# endif() +set(CMAKE_MAXIMUM_SUPPORTED_VERSION 3.28) + +# If CMAKE_VERSION <= CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up +# to CMAKE_VERSION to NEW +if (${CMAKE_VERSION} VERSION_LESS_EQUAL ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) + cmake_policy(VERSION ${CMAKE_VERSION}) +# If CMAKE_VERSION > CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up to +# CMAKE_MAXIMUM_SUPPORTED_VERSION to NEW +else () + cmake_policy(VERSION ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) +endif() project(LoadStaticSharedTargets VERSION 1.4.1 LANGUAGES NONE) diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 9f309814ac837fbd04029109fb37dc0826defca4..ba64606ee81b00b56e8bed8a2e4e25c871026390 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -26,8 +26,13 @@ SOFTWARE. include(CMakePackageConfigHelpers) if (NOT DEFINED LoadStaticSharedTargets_INSTALL_CMAKEDIR) - set(LoadStaticSharedTargets_INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}" - CACHE STRING "Path to LoadStaticSharedTargets CMake files") + set( + LoadStaticSharedTargets_INSTALL_CMAKEDIR + "${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}" + CACHE + STRING + "Path to LoadStaticSharedTargets CMake files" + ) endif () install( @@ -42,10 +47,16 @@ write_basic_package_version_file( COMPATIBILITY SameMajorVersion ) +configure_file( + "LoadStaticSharedTargetsConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/LoadStaticSharedTargetsConfig.cmake" + @ONLY +) + install( FILES "${CMAKE_CURRENT_BINARY_DIR}/LoadStaticSharedTargetsConfigVersion.cmake" - "LoadStaticSharedTargetsConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/LoadStaticSharedTargetsConfig.cmake" "../src/cmake/LoadStaticSharedTargets.cmake" DESTINATION "${LoadStaticSharedTargets_INSTALL_CMAKEDIR}" ) diff --git a/packaging/LoadStaticSharedTargetsConfig.cmake b/packaging/LoadStaticSharedTargetsConfig.cmake.in similarity index 69% rename from packaging/LoadStaticSharedTargetsConfig.cmake rename to packaging/LoadStaticSharedTargetsConfig.cmake.in index 3a59913cdaea8171b5cf8c8041430577eee58615..dd2608401aae2ecb2b0f0443e1f4a54197d36ebe 100644 --- a/packaging/LoadStaticSharedTargetsConfig.cmake +++ b/packaging/LoadStaticSharedTargetsConfig.cmake.in @@ -23,12 +23,19 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ]] -cmake_minimum_required(VERSION 3.25) +cmake_minimum_required(VERSION @CMAKE_MINIMUM_REQUIRED_VERSION@) -# If CMake >=3.24 is used, set policies up to v3.24 to NEW -# if (NOT ${CMAKE_VERSION} VERSION_LESS 3.24) -# cmake_policy(VERSION 3.24) -# endif() +set(CMAKE_MAXIMUM_SUPPORTED_VERSION @CMAKE_MAXIMUM_SUPPORTED_VERSION@) + +# If CMAKE_VERSION <= CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up +# to CMAKE_VERSION to NEW +if (${CMAKE_VERSION} VERSION_LESS_EQUAL ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) + cmake_policy(VERSION ${CMAKE_VERSION}) +# If CMAKE_VERSION > CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up to +# CMAKE_MAXIMUM_SUPPORTED_VERSION to NEW +else () + cmake_policy(VERSION ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) +endif() # include(LoadStaticSharedTargets) should work after this list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index dee4f65c8b868347c424cb54cd2725af10bd4166..7fb6d78b55dc100e9cd605399ecc8d864a4126a0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -64,7 +64,12 @@ set( foreach (TEST_CASE IN LISTS TEST_CASES TEST_CASES_WITH_WARNING) add_test( NAME "${TEST_CASE}" - COMMAND "${CMAKE_COMMAND}" -D CMAKE_MINIMUM_REQUIRED_VERSION=${CMAKE_MINIMUM_REQUIRED_VERSION} -D "TEST_CASE=${TEST_CASE}" -P "./helpers/test_case_wrapper.cmake" + COMMAND + "${CMAKE_COMMAND}" + -D CMAKE_MINIMUM_REQUIRED_VERSION=${CMAKE_MINIMUM_REQUIRED_VERSION} + -D CMAKE_MAXIMUM_SUPPORTED_VERSION=${CMAKE_MAXIMUM_SUPPORTED_VERSION} + -D "TEST_CASE=${TEST_CASE}" + -P "./helpers/test_case_wrapper.cmake" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) endforeach () @@ -72,7 +77,12 @@ endforeach () foreach (TEST_CASE IN LISTS TEST_CASES_WITH_WARNING) add_test( NAME "${TEST_CASE}_check-warning" - COMMAND "${CMAKE_COMMAND}" -D CMAKE_MINIMUM_REQUIRED_VERSION=${CMAKE_MINIMUM_REQUIRED_VERSION} -D "TEST_CASE=${TEST_CASE}" -P "./helpers/test_case_wrapper.cmake" + COMMAND + "${CMAKE_COMMAND}" + -D CMAKE_MINIMUM_REQUIRED_VERSION=${CMAKE_MINIMUM_REQUIRED_VERSION} + -D CMAKE_MAXIMUM_SUPPORTED_VERSION=${CMAKE_MAXIMUM_SUPPORTED_VERSION} + -D "TEST_CASE=${TEST_CASE}" + -P "./helpers/test_case_wrapper.cmake" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) diff --git a/tests/helpers/test_case_wrapper.cmake b/tests/helpers/test_case_wrapper.cmake index 744a3e0f56c2d3f6b600eb1409342ff0a9db3531..53c695bbef43f2e309bff189deb4e64827dc15f4 100644 --- a/tests/helpers/test_case_wrapper.cmake +++ b/tests/helpers/test_case_wrapper.cmake @@ -25,6 +25,16 @@ SOFTWARE. cmake_policy(VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION}) +# If CMAKE_VERSION <= CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up +# to CMAKE_VERSION to NEW +if (${CMAKE_VERSION} VERSION_LESS_EQUAL ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) + cmake_policy(VERSION ${CMAKE_VERSION}) +# If CMAKE_VERSION > CMAKE_MAXIMUM_SUPPORTED_VERSION is used, set policies up to +# CMAKE_MAXIMUM_SUPPORTED_VERSION to NEW +else () + cmake_policy(VERSION ${CMAKE_MAXIMUM_SUPPORTED_VERSION}) +endif() + include("./helpers/assertions.cmake") include("../src/cmake/LoadStaticSharedTargets.cmake")