Skip to content

Commit 30171a7

Browse files
committed
Ensure natvis files in the extra/ directory are added to the target's INTERFACE_SOURCES
1 parent cc9bec7 commit 30171a7

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

include/BoostInstall.cmake

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,37 @@ function(__boost_install_update_include_directory lib incdir prop)
214214

215215
endfunction()
216216

217+
function(__boost_install_update_natvis lib extradir)
218+
219+
if(lib MATCHES "^boost_(.*)$" AND TARGET "${lib}")
220+
221+
file(GLOB files "${extradir}/*.natvis")
222+
223+
# Extract the library name as the component of the path, one up from the header directory
224+
get_filename_component(LIBRARY_NAME "${extradir}" DIRECTORY)
225+
get_filename_component(LIBRARY_NAME "${LIBRARY_NAME}" NAME)
226+
227+
foreach(file IN LISTS files)
228+
229+
get_filename_component(file "${file}" NAME)
230+
231+
target_sources("${lib}" INTERFACE
232+
$<BUILD_INTERFACE:${extradir}/${file}>
233+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATADIR}/boost/${LIBRARY_NAME}/${file}>
234+
)
235+
236+
endforeach()
237+
238+
endif()
239+
240+
endfunction()
241+
217242
# Installs a single target
218-
# boost_install_target(TARGET target VERSION version [HEADER_DIRECTORY directory])
243+
# boost_install_target(TARGET target VERSION version [HEADER_DIRECTORY directory] [EXTRA_DIRECTORY directory])
219244

220245
function(boost_install_target)
221246

222-
cmake_parse_arguments(_ "" "TARGET;VERSION;HEADER_DIRECTORY" "" ${ARGN})
247+
cmake_parse_arguments(_ "" "TARGET;VERSION;HEADER_DIRECTORY;EXTRA_DIRECTORY" "" ${ARGN})
223248

224249
if(NOT __TARGET)
225250

@@ -316,6 +341,10 @@ function(boost_install_target)
316341
if(TYPE STREQUAL "STATIC_LIBRARY" AND NOT CMAKE_VERSION VERSION_LESS 3.15)
317342
install(FILES "$<TARGET_FILE_DIR:${LIB}>/$<TARGET_FILE_PREFIX:${LIB}>$<TARGET_FILE_BASE_NAME:${LIB}>.pdb" DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
318343
endif()
344+
345+
if(__EXTRA_DIRECTORY)
346+
__boost_install_update_natvis(${LIB} ${__EXTRA_DIRECTORY})
347+
endif()
319348
endif()
320349

321350
install(EXPORT ${LIB}-targets DESTINATION "${CONFIG_INSTALL_DIR}" NAMESPACE Boost:: FILE ${LIB}-targets.cmake)
@@ -557,7 +586,7 @@ function(boost_install)
557586

558587
foreach(target IN LISTS __TARGETS)
559588

560-
boost_install_target(TARGET ${target} VERSION ${__VERSION} HEADER_DIRECTORY ${__HEADER_DIRECTORY})
589+
boost_install_target(TARGET ${target} VERSION ${__VERSION} HEADER_DIRECTORY ${__HEADER_DIRECTORY} EXTRA_DIRECTORY ${EXTRA_DIRECTORY})
561590

562591
endforeach()
563592

0 commit comments

Comments
 (0)