Skip to content

Commit ea02b36

Browse files
committed
Mark NVBench headers as SYSTEM for consuming targets.
Fixes #30.
1 parent 935bb0b commit ea02b36

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

nvbench/CMakeLists.txt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,20 @@ nvbench_write_config_header(config.cuh.in
7272
# nvbench (nvbench::nvbench)
7373
add_library(nvbench ${srcs})
7474
nvbench_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
)
8090
target_link_libraries(nvbench
8191
PUBLIC
@@ -112,7 +122,14 @@ add_dependencies(nvbench.all nvbench)
112122
# nvbench.main (nvbench::main)
113123
add_library(nvbench.main OBJECT main.cu)
114124
nvbench_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+
)
116133
set_target_properties(nvbench.main PROPERTIES EXPORT_NAME main)
117134
add_dependencies(nvbench.all nvbench.main)
118135

0 commit comments

Comments
 (0)