89 lines
2.7 KiB
CMake
89 lines
2.7 KiB
CMake
|
function (install_project
|
||
|
PROJECT_NAME i_project_name
|
||
|
TARGET_NAME i_target_name
|
||
|
TARGET_OUTPUT_SUFFIX i_target_output_suffix
|
||
|
EXPORT_HEADER i_export_header
|
||
|
INCLUDE_PREFIX i_include_prefix
|
||
|
HEADER_MATCHING_REGEX i_header_matching_regex
|
||
|
VERSION_HEADER i_version_header
|
||
|
NAMESPACE i_namespace)
|
||
|
install (TARGETS ${i_target_name}
|
||
|
EXPORT ${i_target_name}
|
||
|
RUNTIME DESTINATION bin
|
||
|
INCLUDES DESTINATION include
|
||
|
ARCHIVE DESTINATION lib
|
||
|
LIBRARY DESTINATION lib)
|
||
|
|
||
|
install (DIRECTORY include/
|
||
|
DESTINATION include
|
||
|
FILES_MATCHING
|
||
|
REGEX ${i_header_matching_regex}
|
||
|
REGEX "CMakeLists\.txt" EXCLUDE)
|
||
|
|
||
|
install (FILES ${i_version_header}
|
||
|
DESTINATION include/${i_include_prefix}
|
||
|
COMPONENT Devel)
|
||
|
|
||
|
install (FILES include/${i_export_header}
|
||
|
DESTINATION include/${i_include_prefix}
|
||
|
COMPONENT Devel)
|
||
|
|
||
|
install(
|
||
|
EXPORT ${i_target_name}
|
||
|
DESTINATION lib/cmake/${i_target_name}${i_target_output_suffix}
|
||
|
FILE "${i_target_name}${i_target_output_suffix}.cmake"
|
||
|
COMPONENT Devel)
|
||
|
|
||
|
|
||
|
include(CMakePackageConfigHelpers)
|
||
|
|
||
|
string (TOLOWER ${i_target_name} CMAKE_BASE_FILE_NAME)
|
||
|
string (TOLOWER ${i_target_output_suffix} CMAKE_FILE_OUTPUT_SUFFIX)
|
||
|
|
||
|
write_basic_package_version_file(
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}/${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-config-version.cmake"
|
||
|
VERSION ${${i_project_name}_VERSION}
|
||
|
COMPATIBILITY SameMajorVersion
|
||
|
)
|
||
|
|
||
|
export(EXPORT ${i_target_name}
|
||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}/${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-targets.cmake"
|
||
|
)
|
||
|
|
||
|
configure_file("cmake/${i_project_name}-config.cmake"
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}/${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-config.cmake"
|
||
|
@ONLY
|
||
|
)
|
||
|
|
||
|
set(ConfigPackageLocation "lib/cmake/${i_target_name}${i_target_output_suffix}")
|
||
|
install(EXPORT ${i_target_name}
|
||
|
FILE
|
||
|
"${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-targets.cmake"
|
||
|
NAMESPACE
|
||
|
"${i_namespace}"
|
||
|
DESTINATION
|
||
|
${ConfigPackageLocation}
|
||
|
)
|
||
|
install(
|
||
|
FILES
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}/${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-config.cmake"
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}/${CMAKE_BASE_FILE_NAME}${CMAKE_FILE_OUTPUT_SUFFIX}-config-version.cmake"
|
||
|
DESTINATION
|
||
|
${ConfigPackageLocation}
|
||
|
COMPONENT
|
||
|
Devel
|
||
|
)
|
||
|
|
||
|
configure_file(
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/${i_project_name}.pc.in
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}${i_target_output_suffix}.pc
|
||
|
@ONLY
|
||
|
)
|
||
|
|
||
|
install(FILES
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/${i_target_name}${i_target_output_suffix}.pc
|
||
|
DESTINATION
|
||
|
lib/pkgconfig
|
||
|
)
|
||
|
endfunction (install_project)
|