接着就可以通过 export() 将所有来自${PROJECT_NAME}Targets 的编译定义导出。官方文档如此描述该函数:”Export targets from the build tree for use by outside projects”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# generate the export targets for the build tree # needs to be after the install(TARGETS) command export( EXPORT"${PROJECT_NAME}Targets" NAMESPACE "KTKR::" #FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" )
graph TD A[find_package] --> B(圆角) B --> C{CONFIG or NO_MODULE?} C --> |Yes| E[[Config Mode]] C --> |No| D[[Module Mode]] D --> |Not found| E E --> |Found| F[End] D --> |Found| F[End]
include(CMakePackageConfigHelpers) # generate the config file that is includes the exports configure_package_config_file( ${PROJECT_SOURCE_DIR}/config/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION "${package_name}/cmake" NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO )
# generate the version file for the config file write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY SameMinorVersion )