@@ -34,6 +34,9 @@ endif ()
3434# bench options
3535option (PHTREE_BUILD_BENCHMARKS "Build benchmarks (Requires https://github.com/google/benchmark.git to be installed)" OFF )
3636
37+ # install options
38+ option (PHTREE_INSTALL "Generate the install target" OFF )
39+
3740
3841# ---------------------------------------------------------------------------------------
3942# Compiler config
@@ -82,7 +85,7 @@ else ()
8285 endif ()
8386 if (PHTREE_CODE_COVERAGE)
8487 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } --coverage" ) # -Wa,-mbig-obj")
85- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS } --coverage" )
88+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS } --coverage" )
8689 endif ()
8790endif ()
8891
@@ -98,8 +101,8 @@ add_library(phtree::phtree ALIAS phtree)
98101target_compile_features (phtree INTERFACE cxx_std_17 )
99102
100103target_include_directories (phtree INTERFACE
101- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
102- $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >)
104+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
105+ $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >)
103106
104107if (PHTREE_BUILD_EXAMPLES OR PHTREE_BUILD_ALL)
105108 message (STATUS "Generating examples" )
@@ -117,3 +120,42 @@ if (PHTREE_BUILD_TESTS OR PHTREE_BUILD_ALL)
117120 include (GoogleTest )
118121 add_subdirectory (test )
119122endif ()
123+
124+ # ---------------------------------------------------------------------------------------
125+ # Install
126+ # ---------------------------------------------------------------------------------------
127+ if (PHTREE_INSTALL)
128+ include (GNUInstallDirs )
129+
130+ install (TARGETS phtree
131+ EXPORT ${PROJECT_NAME } _Targets
132+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
133+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
134+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
135+
136+ include (CMakePackageConfigHelpers )
137+ write_basic_package_version_file ("phtreeConfigVersion.cmake"
138+ VERSION ${PROJECT_VERSION }
139+ COMPATIBILITY SameMajorVersion )
140+
141+ configure_package_config_file (
142+ "${PROJECT_SOURCE_DIR } /cmake/${PROJECT_NAME } Config.cmake.in"
143+ "${PROJECT_BINARY_DIR } /${PROJECT_NAME } Config.cmake"
144+ INSTALL_DESTINATION
145+ ${CMAKE_INSTALL_DATAROOTDIR} /${PROJECT_NAME}/cmake )
146+
147+ install (EXPORT ${PROJECT_NAME } _Targets
148+ FILE ${PROJECT_NAME } Targets .cmake
149+ NAMESPACE phtree::
150+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /${PROJECT_NAME } /cmake)
151+
152+ install (FILES "${PROJECT_BINARY_DIR } /${PROJECT_NAME } Config.cmake"
153+ "${PROJECT_BINARY_DIR } /${PROJECT_NAME } ConfigVersion.cmake"
154+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /${PROJECT_NAME } /cmake)
155+
156+ install (DIRECTORY ${PROJECT_SOURCE_DIR } /include/phtree
157+ DESTINATION include
158+ PATTERN "BUILD" EXCLUDE
159+ PATTERN "*.md" EXCLUDE)
160+
161+ endif ()
0 commit comments