@@ -254,3 +254,45 @@ if(SPARROW_IPC_BUILD_DOCS)
254254 message (STATUS "📚 Create docs targets" )
255255 add_subdirectory (docs)
256256endif ()
257+
258+ # Installation
259+ # ============
260+ include (GNUInstallDirs)
261+ include (CMakePackageConfigHelpers)
262+
263+ # Install target
264+ install (TARGETS sparrow-ipc
265+ EXPORT ${PROJECT_NAME} -targets)
266+
267+ # Makes the project importable from the build directory
268+ export (EXPORT ${PROJECT_NAME} -targets
269+ FILE "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Targets.cmake"
270+ NAMESPACE sparrow-ipc::)
271+
272+ # Install headers
273+ install (DIRECTORY ${SPARROW_IPC_INCLUDE_DIR}
274+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
275+ PATTERN ".clang-*" EXCLUDE
276+ PATTERN "README.md" EXCLUDE )
277+
278+ # Install CMake configuration files
279+ set (SPARROW_IPC_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR} /cmake/${PROJECT_NAME} " CACHE
280+ STRING "install path for sparrow-ipcConfig.cmake" )
281+
282+ configure_package_config_file(${PROJECT_NAME} Config.cmake.in
283+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
284+ INSTALL_DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
285+
286+ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake
287+ VERSION ${CMAKE_PROJECT_VERSION}
288+ COMPATIBILITY AnyNewerVersion)
289+
290+ install (FILES
291+ ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake
292+ ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake
293+ DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
294+
295+ install (EXPORT ${PROJECT_NAME} -targets
296+ FILE ${PROJECT_NAME} Targets.cmake
297+ NAMESPACE sparrow-ipc::
298+ DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
0 commit comments