@@ -186,7 +186,8 @@ endif()
186186
187187target_include_directories (sparrow-ipc
188188 PUBLIC
189- ${SPARROW_IPC_INCLUDE_DIR}
189+ $<BUILD_INTERFACE:${SPARROW_IPC_INCLUDE_DIR} >
190+ $<INSTALL_INTERFACE:include >
190191 PRIVATE
191192 ${SPARROW_IPC_SOURCE_DIR} )
192193
@@ -204,3 +205,45 @@ if(SPARROW_IPC_BUILD_TESTS)
204205 enable_testing ()
205206 add_subdirectory (tests)
206207endif ()
208+
209+ # Installation
210+ # ============
211+ include (GNUInstallDirs)
212+ include (CMakePackageConfigHelpers)
213+
214+ # Install target
215+ install (TARGETS sparrow-ipc
216+ EXPORT ${PROJECT_NAME} -targets)
217+
218+ # Makes the project importable from the build directory
219+ export (EXPORT ${PROJECT_NAME} -targets
220+ FILE "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Targets.cmake"
221+ NAMESPACE sparrow-ipc::)
222+
223+ # Install headers
224+ install (DIRECTORY ${SPARROW_IPC_INCLUDE_DIR}
225+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
226+ PATTERN ".clang-*" EXCLUDE
227+ PATTERN "README.md" EXCLUDE )
228+
229+ # Install CMake configuration files
230+ set (SPARROW_IPC_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR} /cmake/${PROJECT_NAME} " CACHE
231+ STRING "install path for sparrow-ipcConfig.cmake" )
232+
233+ configure_package_config_file(${PROJECT_NAME} Config.cmake.in
234+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
235+ INSTALL_DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
236+
237+ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake
238+ VERSION ${CMAKE_PROJECT_VERSION}
239+ COMPATIBILITY AnyNewerVersion)
240+
241+ install (FILES
242+ ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake
243+ ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake
244+ DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
245+
246+ install (EXPORT ${PROJECT_NAME} -targets
247+ FILE ${PROJECT_NAME} Targets.cmake
248+ NAMESPACE sparrow-ipc::
249+ DESTINATION ${SPARROW_IPC_CMAKECONFIG_INSTALL_DIR} )
0 commit comments