Skip to content

Commit 2da12f7

Browse files
committed
Handle install
1 parent cdc5bdb commit 2da12f7

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

CMakeLists.txt

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,8 @@ endif()
186186

187187
target_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)
206207
endif()
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})

sparrow-ipcConfig.cmake.in

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# sparrow-ipc cmake module
2+
# This module sets the following variables in your project::
3+
#
4+
# sparrow-ipc_FOUND - true if sparrow-ipc found on the system
5+
# sparrow-ipc_INCLUDE_DIRS - the directory containing sparrow-ipc headers
6+
# sparrow-ipc_LIBRARY - the location of the sparrow-ipc library (or empty if not applicable)
7+
8+
@PACKAGE_INIT@
9+
10+
include(CMakeFindDependencyMacro)
11+
12+
find_dependency(sparrow)
13+
find_dependency(flatbuffers)
14+
15+
if(NOT TARGET sparrow-ipc::sparrow-ipc)
16+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
17+
get_target_property(@PROJECT_NAME@_INCLUDE_DIRS sparrow-ipc::sparrow-ipc INTERFACE_INCLUDE_DIRECTORIES)
18+
get_target_property(@PROJECT_NAME@_LIBRARY sparrow-ipc::sparrow-ipc LOCATION)
19+
endif()

0 commit comments

Comments
 (0)