@@ -20,13 +20,37 @@ function(GtsamMakeConfigFile PACKAGE_NAME)
2020 set (EXTRA_FILE "_does_not_exist_" )
2121 endif ()
2222
23+ # GTSAM defines its version variable as GTSAM_VERSION_STRING while other
24+ # projects may define it as <ProjectName>_VERSION. Since this file is
25+ # installed on the system as part of GTSAMCMakeTools and may be useful in
26+ # external projects, we need to handle both cases of version variable naming
27+ # here.
28+ if (NOT DEFINED ${PACKAGE_NAME} _VERSION AND DEFINED ${PACKAGE_NAME} _VERSION_STRING)
29+ set (${PACKAGE_NAME} _VERSION ${${PACKAGE_NAME} _VERSION_STRING})
30+ endif ()
31+
32+ # Version file
33+ include (CMakePackageConfigHelpers )
34+ write_basic_package_version_file (
35+ "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} ConfigVersion.cmake"
36+ VERSION ${${PACKAGE_NAME}_VERSION}
37+ COMPATIBILITY SameMajorVersion
38+ )
39+
40+ # Config file
2341 file (RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX} /${DEF_INSTALL_CMAKE_DIR} " "${CMAKE_INSTALL_PREFIX} /include" )
2442 file (RELATIVE_PATH CONF_REL_LIB_DIR "${CMAKE_INSTALL_PREFIX} /${DEF_INSTALL_CMAKE_DIR} " "${CMAKE_INSTALL_PREFIX} /lib" )
2543 configure_file (${GTSAM_CONFIG_TEMPLATE_PATH} /Config.cmake.in "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} Config.cmake" @ONLY )
2644 message (STATUS "Wrote ${PROJECT_BINARY_DIR} /${PACKAGE_NAME} Config.cmake" )
2745
28- # Install config and exports files (for find scripts)
29- install (FILES "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} Config.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX} /${DEF_INSTALL_CMAKE_DIR} " )
46+ # Install config, version and exports files (for find scripts)
47+ install (
48+ FILES
49+ "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} Config.cmake"
50+ "${PROJECT_BINARY_DIR} /${PACKAGE_NAME} ConfigVersion.cmake"
51+ DESTINATION
52+ "${CMAKE_INSTALL_PREFIX} /${DEF_INSTALL_CMAKE_DIR} "
53+ )
3054 install (EXPORT ${PACKAGE_NAME} -exports DESTINATION ${DEF_INSTALL_CMAKE_DIR} )
3155
3256endfunction ()
0 commit comments