From ea02b3650e1b0df1bbfb8f3606fab06a32581c79 Mon Sep 17 00:00:00 2001 From: Allison Piper Date: Fri, 5 Sep 2025 15:23:35 -0400 Subject: [PATCH] Mark NVBench headers as SYSTEM for consuming targets. Fixes #30. --- nvbench/CMakeLists.txt | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/nvbench/CMakeLists.txt b/nvbench/CMakeLists.txt index 1c2fb7a2..b788cb02 100644 --- a/nvbench/CMakeLists.txt +++ b/nvbench/CMakeLists.txt @@ -72,10 +72,20 @@ nvbench_write_config_header(config.cuh.in # nvbench (nvbench::nvbench) add_library(nvbench ${srcs}) nvbench_config_target(nvbench) -target_include_directories(nvbench PUBLIC - "$" - "$" - "$" +# Internal NVBench builds should see warnings from NVBench headers, +# so add include paths privately first (uses `-I`). +target_include_directories(nvbench + PRIVATE + "$" + "$" +) +# Consumers should treat NVBench headers as system headers to silence +# NVBench's own warnings, hence we re-add the paths as `SYSTEM INTERFACE`. +target_include_directories(nvbench + SYSTEM INTERFACE + "$" + "$" + "$" ) target_link_libraries(nvbench PUBLIC @@ -112,7 +122,14 @@ add_dependencies(nvbench.all nvbench) # nvbench.main (nvbench::main) add_library(nvbench.main OBJECT main.cu) nvbench_config_target(nvbench.main) -target_link_libraries(nvbench.main PUBLIC nvbench) +# Propagate `nvbench` to consumers but keep NVBench's own build warning-visible. +target_link_libraries(nvbench.main INTERFACE nvbench) +# Add NVBench's headers privately so the object library itself sees warnings. +target_include_directories(nvbench.main + PRIVATE + "$" + "$" +) set_target_properties(nvbench.main PROPERTIES EXPORT_NAME main) add_dependencies(nvbench.all nvbench.main)