1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
function (install_project
PROJECT_NAME i_project_name
TARGET_NAME i_target_name
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)
set(i_target_output_suffix "")
include(GNUInstallDirs)
install (TARGETS ${i_target_name}
EXPORT ${i_target_name}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
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 ${CMAKE_INSTALL_LIBDIR}/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)
set(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 "${CMAKE_INSTALL_LIBDIR}/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
${CMAKE_INSTALL_LIBDIR}/pkgconfig
)
endfunction (install_project)
|