11
22set (
3- PACKAGE_PROJECT_CONFIG_FILE_PATH
4- "${CMAKE_CURRENT_LIST_DIR} /Config.cmake.in "
3+ PACKAGE_PROJECT_ROOT_PATH
4+ "${CMAKE_CURRENT_LIST_DIR} "
55 CACHE INTERNAL
6- "The config template for the packageProject script "
6+ "The path to the PackageProject directory "
77)
88
99function (packageProject )
1010 include (CMakePackageConfigHelpers )
1111 include (GNUInstallDirs )
1212
13- cmake_parse_arguments (PROJECT "" "NAME;VERSION;INCLUDE_DIR;INCLUDE_DESTINATION;BINARY_DIR;COMPATIBILITY" "DEPENDENCIES" ${ARGN} )
13+ cmake_parse_arguments (
14+ PROJECT
15+ ""
16+ "NAME;VERSION;INCLUDE_DIR;INCLUDE_DESTINATION;BINARY_DIR;COMPATIBILITY;VERSION_HEADER"
17+ "DEPENDENCIES"
18+ ${ARGN}
19+ )
1420
1521 # handle default arguments
1622 if (NOT DEFINED PROJECT_COMPATIBILITY)
1723 set (PROJECT_COMPATIBILITY AnyNewerVersion)
1824 endif ()
1925
26+ if (DEFINED PROJECT_VERSION_HEADER)
27+ set (PROJECT_VERSION_INCLUDE_DIR ${PROJECT_BINARY_DIR} /PackageProjectInclude)
28+ string (TOUPPER ${PROJECT_NAME} UPPERCASE_PROJECT_NAME)
29+ configure_file (
30+ ${PACKAGE_PROJECT_ROOT_PATH} /version.h.in
31+ ${PROJECT_VERSION_INCLUDE_DIR} /${PROJECT_VERSION_HEADER}
32+ @ONLY
33+ )
34+ get_target_property (target_type ${PROJECT_NAME} TYPE )
35+ if (target_type STREQUAL "INTERFACE_LIBRARY" )
36+ set (VISIBILITY INTERFACE)
37+ else ()
38+ set (VISIBILITY PUBLIC)
39+ endif ()
40+ target_include_directories (${PROJECT_NAME} ${VISIBILITY} "$<BUILD_INTERFACE :${PROJECT_VERSION_INCLUDE_DIR} >" )
41+ install (
42+ DIRECTORY ${PROJECT_VERSION_INCLUDE_DIR} /
43+ DESTINATION ${PROJECT_INCLUDE_DESTINATION}
44+ )
45+ endif ()
46+
2047 write_basic_package_version_file (
2148 "${PROJECT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake"
2249 VERSION ${PROJECT_VERSION}
@@ -34,7 +61,7 @@ function(packageProject)
3461 )
3562
3663 configure_package_config_file (
37- ${PACKAGE_PROJECT_CONFIG_FILE_PATH}
64+ ${PACKAGE_PROJECT_ROOT_PATH} /Config.cmake.in
3865 "${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
3966 INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
4067 )
0 commit comments