@@ -72,10 +72,20 @@ nvbench_write_config_header(config.cuh.in
7272# nvbench (nvbench::nvbench)
7373add_library (nvbench ${srcs} )
7474nvbench_config_target(nvbench)
75- target_include_directories (nvbench PUBLIC
76- "$<BUILD_INTERFACE:${NVBench_SOURCE_DIR} >"
77- "$<BUILD_INTERFACE:${NVBench_BINARY_DIR} >"
78- "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >"
75+ # Internal NVBench builds should see warnings from NVBench headers,
76+ # so add include paths privately first (uses `-I`).
77+ target_include_directories (nvbench
78+ PRIVATE
79+ "$<BUILD_INTERFACE:${NVBench_SOURCE_DIR} >"
80+ "$<BUILD_INTERFACE:${NVBench_BINARY_DIR} >"
81+ )
82+ # Consumers should treat NVBench headers as system headers to silence
83+ # NVBench's own warnings, hence we re-add the paths as `SYSTEM INTERFACE`.
84+ target_include_directories (nvbench
85+ SYSTEM INTERFACE
86+ "$<BUILD_INTERFACE:${NVBench_SOURCE_DIR} >"
87+ "$<BUILD_INTERFACE:${NVBench_BINARY_DIR} >"
88+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >"
7989)
8090target_link_libraries (nvbench
8191 PUBLIC
@@ -112,7 +122,14 @@ add_dependencies(nvbench.all nvbench)
112122# nvbench.main (nvbench::main)
113123add_library (nvbench.main OBJECT main.cu)
114124nvbench_config_target(nvbench.main)
115- target_link_libraries (nvbench.main PUBLIC nvbench)
125+ # Propagate `nvbench` to consumers but keep NVBench's own build warning-visible.
126+ target_link_libraries (nvbench.main INTERFACE nvbench)
127+ # Add NVBench's headers privately so the object library itself sees warnings.
128+ target_include_directories (nvbench.main
129+ PRIVATE
130+ "$<BUILD_INTERFACE:${NVBench_SOURCE_DIR} >"
131+ "$<BUILD_INTERFACE:${NVBench_BINARY_DIR} >"
132+ )
116133set_target_properties (nvbench.main PROPERTIES EXPORT_NAME main)
117134add_dependencies (nvbench.all nvbench.main)
118135
0 commit comments