@@ -214,12 +214,37 @@ function(__boost_install_update_include_directory lib incdir prop)
214214
215215endfunction ()
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
220245function (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