@@ -13,14 +13,15 @@ include(GNUInstallDirs)
1313include (CMakePackageConfigHelpers)
1414
1515# Configures CMake install rules for library target and package config files.
16- # - Precondition: NAME, VERSION, and NAMESPACE specified; target NAME exists
16+ # - Precondition: NAME, PACKAGE_NAME, VERSION, and NAMESPACE specified; target NAME exists
1717# - Postcondition: install rules created for target, config files, and export with NAMESPACE:: prefix
1818# - Supports header-only (INTERFACE) and compiled libraries, uses SameMajorVersion compatibility
1919function (_cpp_library_setup_install)
2020 set (oneValueArgs
21- NAME # Target name (e.g., "stlab-enum-ops")
22- VERSION # Version string (e.g., "1.2.3")
23- NAMESPACE # Namespace for alias (e.g., "stlab")
21+ NAME # Target name (e.g., "stlab-enum-ops")
22+ PACKAGE_NAME # Package name for find_package() (e.g., "enum-ops")
23+ VERSION # Version string (e.g., "1.2.3")
24+ NAMESPACE # Namespace for alias (e.g., "stlab")
2425 )
2526 set (multiValueArgs
2627 HEADERS # List of header file paths (for FILE_SET support check)
@@ -32,6 +33,9 @@ function(_cpp_library_setup_install)
3233 if (NOT ARG_NAME)
3334 message (FATAL_ERROR "_cpp_library_setup_install: NAME is required" )
3435 endif ()
36+ if (NOT ARG_PACKAGE_NAME)
37+ message (FATAL_ERROR "_cpp_library_setup_install: PACKAGE_NAME is required" )
38+ endif ()
3539 if (NOT ARG_VERSION)
3640 message (FATAL_ERROR "_cpp_library_setup_install: VERSION is required" )
3741 endif ()
@@ -64,32 +68,32 @@ function(_cpp_library_setup_install)
6468 # Generate package version file
6569 # Uses SameMajorVersion compatibility (e.g., 2.1.0 is compatible with 2.0.0)
6670 write_basic_package_version_file(
67- "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME } ConfigVersion.cmake"
71+ "${CMAKE_CURRENT_BINARY_DIR} /${ARG_PACKAGE_NAME } ConfigVersion.cmake"
6872 VERSION ${ARG_VERSION}
6973 COMPATIBILITY SameMajorVersion
7074 )
7175
7276 # Generate package config file from template
7377 configure_file (
7478 "${CPP_LIBRARY_ROOT} /templates/Config.cmake.in"
75- "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME } Config.cmake"
79+ "${CMAKE_CURRENT_BINARY_DIR} /${ARG_PACKAGE_NAME } Config.cmake"
7680 @ONLY
7781 )
7882
7983 # Install export targets with namespace
8084 # This allows downstream projects to use find_package(package-name)
8185 # and link against namespace::target
8286 install (EXPORT ${ARG_NAME} Targets
83- FILE ${ARG_NAME } Targets.cmake
87+ FILE ${ARG_PACKAGE_NAME } Targets.cmake
8488 NAMESPACE ${ARG_NAMESPACE} ::
85- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${ARG_NAME }
89+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${ARG_PACKAGE_NAME }
8690 )
8791
8892 # Install package config and version files
8993 install (FILES
90- "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME } Config.cmake"
91- "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME } ConfigVersion.cmake"
92- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${ARG_NAME }
94+ "${CMAKE_CURRENT_BINARY_DIR} /${ARG_PACKAGE_NAME } Config.cmake"
95+ "${CMAKE_CURRENT_BINARY_DIR} /${ARG_PACKAGE_NAME } ConfigVersion.cmake"
96+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${ARG_PACKAGE_NAME }
9397 )
9498
9599endfunction ()
0 commit comments