@@ -12,34 +12,41 @@ function(packageProject)
1212
1313 cmake_parse_arguments (
1414 PROJECT
15- ""
15+ "NO_VERSION_SUFFIX "
1616 "NAME;VERSION;INCLUDE_DIR;INCLUDE_DESTINATION;BINARY_DIR;COMPATIBILITY;VERSION_HEADER;NAMESPACE"
1717 "DEPENDENCIES"
1818 ${ARGN}
1919 )
2020
21+ if (DEFINED PROJECT_NO_VERSION_SUFFIX)
22+ unset (_PROJECT_VERSION_SUFFIX)
23+ else ()
24+ set (_PROJECT_VERSION_SUFFIX -${PROJECT_VERSION} )
25+ endif ()
26+
2127 # handle default arguments
22- if (NOT DEFINED PROJECT_COMPATIBILITY)
28+ if (NOT DEFINED PROJECT_COMPATIBILITY)
2329 set (PROJECT_COMPATIBILITY AnyNewerVersion)
2430 endif ()
2531
2632 # we wanto to automatically add :: to our namespace, so only append if a namespace was given in the first place
2733 # we also provide an alias to ensure that local and installed versions have the same name
28- if (DEFINED PROJECT_NAMESPACE)
34+ if (DEFINED PROJECT_NAMESPACE)
2935 set (PROJECT_NAMESPACE ${PROJECT_NAMESPACE} ::)
3036 add_library (${PROJECT_NAMESPACE}${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
3137 endif ()
3238
33- if (DEFINED PROJECT_VERSION_HEADER)
39+ if (DEFINED PROJECT_VERSION_HEADER)
3440 set (PROJECT_VERSION_INCLUDE_DIR ${PROJECT_BINARY_DIR} /PackageProjectInclude)
3541 string (TOUPPER ${PROJECT_NAME} UPPERCASE_PROJECT_NAME)
3642 configure_file (
3743 ${PACKAGE_PROJECT_ROOT_PATH} /version.h.in
3844 ${PROJECT_VERSION_INCLUDE_DIR} /${PROJECT_VERSION_HEADER}
3945 @ONLY
4046 )
47+
4148 get_target_property (target_type ${PROJECT_NAME} TYPE )
42- if (target_type STREQUAL "INTERFACE_LIBRARY" )
49+ if (target_type STREQUAL "INTERFACE_LIBRARY" )
4350 set (VISIBILITY INTERFACE)
4451 else ()
4552 set (VISIBILITY PUBLIC)
@@ -60,31 +67,31 @@ function(packageProject)
6067 install (
6168 TARGETS ${PROJECT_NAME}
6269 EXPORT ${PROJECT_NAME} Targets
63- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /${PROJECT_NAME} - ${PROJECT_VERSION } COMPONENT Runtime
64- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} /${PROJECT_NAME} - ${PROJECT_VERSION } COMPONENT Development
65- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} /${PROJECT_NAME} - ${PROJECT_VERSION } COMPONENT Runtime
66- BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} /${PROJECT_NAME} - ${PROJECT_VERSION } COMPONENT Runtime
67- PUBLIC_HEADER DESTINATION ${INCLUDE_DESTINATION } COMPONENT Development
70+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX } COMPONENT Runtime
71+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} /${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX } COMPONENT Development
72+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} /${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX } COMPONENT Runtime
73+ BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} /${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX } COMPONENT Runtime
74+ PUBLIC_HEADER DESTINATION ${PROJECT_INCLUDE_DESTINATION } COMPONENT Development
6875 )
6976
7077 configure_package_config_file (
7178 ${PACKAGE_PROJECT_ROOT_PATH} /Config.cmake.in
7279 "${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
73- INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION }
80+ INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX }
7481 )
7582
7683 install (
7784 EXPORT ${PROJECT_NAME} Targets
78- DESTINATION lib/cmake/${PROJECT_NAME} - ${PROJECT_VERSION }
85+ DESTINATION lib/cmake/${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX }
7986 NAMESPACE ${PROJECT_NAMESPACE}
8087 )
8188
8289 install (
83- FILES
90+ FILES
8491 "${PROJECT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake"
8592 "${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
8693 DESTINATION
87- lib/cmake/${PROJECT_NAME} - ${PROJECT_VERSION }
94+ lib/cmake/${PROJECT_NAME}${_PROJECT_VERSION_SUFFIX }
8895 )
8996
9097 install (
@@ -93,4 +100,4 @@ function(packageProject)
93100 )
94101
95102 set (${PROJECT_NAME} _VERSION ${PROJECT_VERSION} CACHE INTERNAL "" )
96- endfunction ()
103+ endfunction ()
0 commit comments