Skip to content

Commit f62ee82

Browse files
committed
use filesets
1 parent ef48733 commit f62ee82

2 files changed

Lines changed: 31 additions & 32 deletions

File tree

CMake/ystdlib-cpp-helpers.cmake

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,8 @@ function(cpp_library)
9696
endif()
9797
add_library(${arg_cpp_lib_NAME} INTERFACE)
9898
target_link_libraries(${arg_cpp_lib_NAME} INTERFACE ${arg_cpp_lib_PUBLIC_LINK_LIBRARIES})
99-
target_include_directories(
100-
${arg_cpp_lib_NAME}
101-
INTERFACE
102-
"$<BUILD_INTERFACE:${arg_cpp_lib_BUILD_INCLUDE_DIR}>"
103-
)
104-
target_compile_features(${arg_cpp_lib_NAME} INTERFACE cxx_std_20)
10599

106-
# tells where headers are
107-
target_include_directories(${arg_cpp_lib_NAME} INTERFACE
108-
# "$<INSTALL_INTERFACE:include/${arg_cpp_lib_NAME}>")
109-
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
100+
target_compile_features(${arg_cpp_lib_NAME} INTERFACE cxx_std_20)
110101

111102
else()
112103
# The library type is specified by `BUILD_SHARED_LIBS` if it is defined. Otherwise, the type
@@ -125,22 +116,22 @@ function(cpp_library)
125116
PRIVATE
126117
${arg_cpp_lib_PRIVATE_LINK_LIBRARIES}
127118
)
128-
target_include_directories(
129-
${arg_cpp_lib_NAME}
130-
PUBLIC
131-
"$<BUILD_INTERFACE:${arg_cpp_lib_BUILD_INCLUDE_DIR}>"
132-
)
133119
target_compile_features(${arg_cpp_lib_NAME} PUBLIC cxx_std_20)
134120
endif()
135121

136122
add_library(${_ALIAS_TARGET_NAME} ALIAS ${arg_cpp_lib_NAME})
137123

138-
# install headers
139-
set(INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}/ystdlib/${arg_cpp_lib_NAME}")
140-
install(
124+
# replaces header_include_directories
125+
# replaces header installation
126+
target_sources(
127+
${arg_cpp_lib_NAME}
128+
PUBLIC
129+
FILE_SET HEADERS
130+
BASE_DIRS
131+
"$<BUILD_INTERFACE:${arg_cpp_lib_BUILD_INCLUDE_DIR}>"
132+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
141133
FILES
142-
${arg_cpp_lib_PUBLIC_HEADERS}
143-
DESTINATION "${INSTALL_INCLUDE_DIR}"
134+
${arg_cpp_lib_PUBLIC_HEADERS}
144135
)
145136

146137
set_target_properties(

CMakeLists.txt

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.22.1)
1+
cmake_minimum_required(VERSION 3.23)
22

33
set(ystdlib_VERSION "0.0.1" CACHE STRING "Project version.")
44

@@ -89,17 +89,25 @@ set(ystdlib_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR})
8989

9090
add_subdirectory(src/ystdlib)
9191

92-
install(TARGETS
93-
containers
94-
error_handling
95-
io_interface
96-
wrapped_facade_headers
97-
EXPORT ystdlib-targets
98-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
99-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
100-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
101-
# FILE_SET HEADERS
102-
)
92+
set(ystdlib_targets
93+
containers
94+
error_handling
95+
io_interface
96+
wrapped_facade_headers)
97+
98+
foreach(install_target_name IN LISTS ystdlib_targets)
99+
100+
install(TARGETS
101+
${install_target_name}
102+
EXPORT ystdlib-targets
103+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
104+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
105+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
106+
FILE_SET HEADERS
107+
)
108+
109+
endforeach()
110+
103111

104112
install(EXPORT ystdlib-targets NAMESPACE ystdlib:: DESTINATION ${ystdlib_INSTALL_CONFIG_DIR})
105113

0 commit comments

Comments
 (0)