@@ -151,6 +151,23 @@ set(stdexec_export_targets)
151151# Define the main library
152152add_library (stdexec INTERFACE )
153153
154+ file (GLOB_RECURSE exec_headers CONFIGURE_DEPENDS include /exec/*.hpp)
155+ file (GLOB_RECURSE stdexec_headers CONFIGURE_DEPENDS include /stdexec/*.hpp)
156+ target_sources (stdexec
157+ PUBLIC
158+ FILE_SET headers
159+ TYPE HEADERS
160+ BASE_DIRS include
161+ FILES
162+ ${exec_headers}
163+ ${stdexec_headers}
164+ # stdexec_version_config.hpp is generated by rapids' script
165+ FILE_SET version_config
166+ TYPE HEADERS
167+ BASE_DIRS ${CMAKE_BINARY_DIR} /include
168+ FILES
169+ ${CMAKE_BINARY_DIR} /include /stdexec_version_config.hpp
170+ )
154171list (APPEND stdexec_export_targets stdexec)
155172
156173# Set library version
@@ -160,10 +177,6 @@ set_target_properties(stdexec PROPERTIES
160177
161178# Declare the public include directories
162179include (GNUInstallDirs)
163- target_include_directories (stdexec INTERFACE
164- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include />
165- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
166- )
167180
168181target_link_libraries (stdexec INTERFACE Threads::Threads)
169182
@@ -269,9 +282,15 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")
269282endif ()
270283
271284if (STDEXEC_ENABLE_CUDA)
272-
273- file (GLOB_RECURSE nvexec_sources include /nvexec/*.cuh)
274- add_library (nvexec INTERFACE ${nvexec_sources} )
285+ file (GLOB_RECURSE nvexec_headers CONFIGURE_DEPENDS include /nvexec/*.cuh)
286+ add_library (nvexec INTERFACE )
287+ target_sources (nvexec
288+ PUBLIC
289+ FILE_SET headers
290+ TYPE HEADERS
291+ BASE_DIRS include
292+ FILES ${nvexec_headers}
293+ )
275294 list (APPEND stdexec_export_targets nvexec)
276295 add_library (STDEXEC::nvexec ALIAS nvexec)
277296
@@ -283,6 +302,10 @@ if(STDEXEC_ENABLE_CUDA)
283302 target_link_options (nvexec INTERFACE
284303 $<$<AND :$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>:-stdpar -gpu=cc${CMAKE_CUDA_ARCHITECTURES} >)
285304
305+ install (TARGETS nvexec
306+ EXPORT stdexec-exports
307+ FILE_SET headers)
308+
286309 if (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC" ))
287310 include (rapids-cuda)
288311 # Needs to run before `enable_language(CUDA)`
@@ -330,16 +353,29 @@ if (STDEXEC_ENABLE_TBB)
330353 INSTALL_EXPORT_SET stdexec-exports
331354 )
332355
333- file (GLOB_RECURSE tbbpool_sources include /execpools/tbb/*.hpp)
334- add_library (tbbpool INTERFACE ${tbbpool_sources} )
356+ # CONFIGURE_DEPENDS ensures that CMake reconfigures when a relevant hpp file is
357+ # added or removed.
358+ file (GLOB_RECURSE tbbpool_headers CONFIGURE_DEPENDS include /execpools/tbb/*.hpp)
359+ add_library (tbbpool INTERFACE )
335360 list (APPEND stdexec_export_targets tbbpool)
336361 add_library (STDEXEC::tbbpool ALIAS tbbpool)
362+ target_sources (tbbpool
363+ PUBLIC
364+ FILE_SET headers
365+ TYPE HEADERS
366+ BASE_DIRS include
367+ FILES ${tbbpool_headers}
368+ )
337369
338370 target_link_libraries (tbbpool
339371 INTERFACE
340372 STDEXEC::stdexec
341373 TBB::tbb
342374 )
375+
376+ install (TARGETS tbbpool
377+ EXPORT stdexec-exports
378+ FILE_SET headers)
343379endif ()
344380
345381option (STDEXEC_ENABLE_TASKFLOW "Enable TaskFlow targets" OFF )
@@ -435,10 +471,6 @@ endif()
435471
436472set (SYSTEM_CONTEXT_SOURCES src/system_context/system_context.cpp)
437473add_library (system_context STATIC ${SYSTEM_CONTEXT_SOURCES} )
438- target_include_directories (system_context PRIVATE
439- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include />
440- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
441- )
442474target_compile_features (system_context PUBLIC cxx_std_20)
443475set_target_properties (system_context PROPERTIES
444476 CXX_STANDARD 20
@@ -448,7 +480,7 @@ target_compile_options(system_context PUBLIC
448480 $<$<COMPILE_LANG_AND_ID:CXX,MSVC >:/Zc:__cplusplus /Zc:preprocessor>
449481 )
450482add_library (STDEXEC::system_context ALIAS system_context)
451-
483+ target_link_libraries (system_context PUBLIC stdexec)
452484
453485
454486if (CMAKE_CROSSCOMPILING )
@@ -499,16 +531,9 @@ endif()
499531include (CPack)
500532
501533install (TARGETS stdexec system_context
502- DESTINATION ${CMAKE_INSTALL_LIBDIR}
503- EXPORT stdexec-exports)
504-
505- install (
506- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /
507- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
508-
509- install (
510- FILES ${CMAKE_CURRENT_BINARY_DIR} /include /stdexec_version_config.hpp
511- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
534+ EXPORT stdexec-exports
535+ FILE_SET headers
536+ FILE_SET version_config)
512537
513538##############################################################################
514539# Install exports ------------------------------------------------------------
0 commit comments