diff --git a/cmake/PROJECT_NAMEConfigVersion.cmake.in.in b/cmake/PROJECT_NAMEConfigVersion.cmake.in.in new file mode 100644 index 0000000000000000000000000000000000000000..d449c1b8deb43f28483d70822f48f7eef27a76e6 --- /dev/null +++ b/cmake/PROJECT_NAMEConfigVersion.cmake.in.in @@ -0,0 +1,30 @@ +####################################################################################################################### +# +# cmake module for finding @PROJECT_NAME@ +# +# returns: +# PACKAGE_VERSION = full provided version string +# PACKAGE_VERSION_EXACT = true if version is exact match +# PACKAGE_VERSION_COMPATIBLE = true if version is compatible +# +####################################################################################################################### + +####################################################################################################################### +# +# IMPORTANT NOTE: +# +# DO NOT MODIFY THIS FILE inside a project. Instead update the project-template repository and pull the change from +# there. Make sure to keep the file generic, since it will be used by other projects, too. +# +# If you have modified this file inside a project despite this warning, make sure to cherry-pick all your changes +# into the project-template repository immediately. +# +####################################################################################################################### + +set(PACKAGE_VERSION @@PROJECT_NAME@_SOVERSION@) +if(@@PROJECT_NAME@_SOVERSION@ VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE 1) + set(PACKAGE_VERSION_EXACT 1) +elseif(@@PROJECT_NAME@_SOVERSION@ VERSION_GREATER "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE 1) +endif() diff --git a/cmake/create_cmake_config_files.cmake b/cmake/create_cmake_config_files.cmake index 3f02fa46d1aa1235ff2d2a4663029d2b18f6e1c6..af2c07dd70ecab431329184cb5a21f400065f4fb 100644 --- a/cmake/create_cmake_config_files.cmake +++ b/cmake/create_cmake_config_files.cmake @@ -56,6 +56,8 @@ endforeach() # create the cmake find_package configuration file configure_file(cmake/PROJECT_NAMEConfig.cmake.in.in "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake.in" @ONLY) configure_file(${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake.in "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" @ONLY) +configure_file(cmake/PROJECT_NAMEConfigVersion.cmake.in.in "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in" @ONLY) +configure_file(${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY) # create the shell script for standard make files configure_file(cmake/PROJECT_NAME-config.in.in "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}-config.in" @ONLY) @@ -64,6 +66,8 @@ configure_file(${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}-config.in "${PROJECT_ # install cmake find_package configuration file install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" DESTINATION lib/cmake/${PROJECT_NAME} COMPONENT dev) +install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION lib/cmake/${PROJECT_NAME} COMPONENT dev) # install same cmake configuration file another time into the Modules cmake subdirectory for compatibility reasons install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"