Skip to content

Commit 021526f

Browse files
committed
Configure cmake install
1 parent 9a6fdfc commit 021526f

3 files changed

Lines changed: 69 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,23 @@ endif()
4747
add_subdirectory(src/lib)
4848
add_subdirectory(src/test)
4949
add_subdirectory(doc)
50+
51+
52+
include(CMakePackageConfigHelpers)
53+
write_basic_package_version_file(
54+
"${CMAKE_CURRENT_BINARY_DIR}/fb-cppConfigVersion.cmake"
55+
VERSION ${PROJECT_VERSION}
56+
COMPATIBILITY AnyNewerVersion
57+
)
58+
59+
configure_package_config_file(
60+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/fb-cppConfig.cmake.in"
61+
"${CMAKE_CURRENT_BINARY_DIR}/fb-cppConfig.cmake"
62+
INSTALL_DESTINATION lib/cmake/fb-cpp
63+
)
64+
65+
install(FILES
66+
"${CMAKE_CURRENT_BINARY_DIR}/fb-cppConfig.cmake"
67+
"${CMAKE_CURRENT_BINARY_DIR}/fb-cppConfigVersion.cmake"
68+
DESTINATION lib/cmake/fb-cpp
69+
)

cmake/fb-cppConfig.cmake.in

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@PACKAGE_INIT@
2+
3+
include(CMakeFindDependencyMacro)
4+
5+
find_dependency(Boost OPTIONAL
6+
COMPONENTS
7+
dll
8+
multiprecision
9+
)
10+
11+
include("${CMAKE_CURRENT_LIST_DIR}/fb-cppTargets.cmake")
12+
13+
check_required_components(fb-cpp)

src/lib/CMakeLists.txt

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,46 @@ add_library(${PROJECT_NAME}
1717
${SRC}
1818
)
1919

20+
2021
target_include_directories(${PROJECT_NAME}
21-
PUBLIC ${CMAKE_CURRENT_LIST_DIR}/
22+
PUBLIC
23+
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
24+
$<INSTALL_INTERFACE:include/fb-cpp>
2225
)
2326

2427
target_link_libraries(${PROJECT_NAME}
2528
PRIVATE Boost::multiprecision
2629
${CMAKE_DL_LIBS}
2730
)
31+
32+
file(GLOB_RECURSE HEADER_FILES
33+
"${CMAKE_CURRENT_LIST_DIR}/*.h"
34+
"${CMAKE_CURRENT_LIST_DIR}/*.hpp"
35+
)
36+
37+
foreach(HEADER_FILE ${HEADER_FILES})
38+
file(RELATIVE_PATH REL_PATH ${CMAKE_CURRENT_LIST_DIR} ${HEADER_FILE})
39+
get_filename_component(REL_DIR ${REL_PATH} DIRECTORY)
40+
if(REL_DIR)
41+
install(FILES ${HEADER_FILE}
42+
DESTINATION include/fb-cpp/${REL_DIR}
43+
)
44+
else()
45+
install(FILES ${HEADER_FILE}
46+
DESTINATION include/fb-cpp
47+
)
48+
endif()
49+
endforeach()
50+
51+
install(TARGETS ${PROJECT_NAME}
52+
EXPORT ${PROJECT_NAME}Targets
53+
LIBRARY DESTINATION lib
54+
ARCHIVE DESTINATION lib
55+
RUNTIME DESTINATION bin
56+
)
57+
58+
install(EXPORT ${PROJECT_NAME}Targets
59+
FILE ${PROJECT_NAME}Targets.cmake
60+
NAMESPACE ${PROJECT_NAME}::
61+
DESTINATION lib/cmake/${PROJECT_NAME}
62+
)

0 commit comments

Comments
 (0)