Add nvbench::main CMake target.

Linking to this instead of `nvbench::nvbench` will automatically include
the `NVBENCH_MAIN` macro.
This commit is contained in:
Allison Vacanti
2021-02-19 09:34:02 -05:00
parent 2cc9bf41e3
commit a747982415
3 changed files with 12 additions and 1 deletions

View File

@@ -24,8 +24,13 @@ set(srcs
)
add_library(nvbench STATIC ${srcs})
add_library(nvbench::nvbench ALIAS nvbench)
# TODO generator expressions for installed paths
target_include_directories(nvbench PUBLIC "${nvbench_SOURCE_DIR}")
target_link_libraries(nvbench PRIVATE fmt::fmt)
target_compile_features(nvbench PUBLIC cuda_std_17)
add_library(nvbench_main OBJECT main.cu)
add_library(nvbench::main ALIAS nvbench_main)
target_link_libraries(nvbench_main PUBLIC nvbench)

6
nvbench/main.cu Normal file
View File

@@ -0,0 +1,6 @@
// Provided as a CMake OBJECT library named nvbench::main so users don't have
// to add `NVBENCH_MAIN` to every benchmark executable.
#include <nvbench/main.cuh>
NVBENCH_MAIN

View File

@@ -23,7 +23,7 @@ foreach(test_src IN LISTS test_srcs)
string(PREPEND test_name "nvbench.test.")
add_executable(${test_name} "${test_src}")
target_include_directories(${test_name} PRIVATE "${CMAKE_CURRENT_LIST_DIR}")
target_link_libraries(${test_name} PRIVATE nvbench fmt)
target_link_libraries(${test_name} PRIVATE nvbench::nvbench fmt)
set_target_properties(${test_name} PROPERTIES COMPILE_FEATURES cuda_std_17)
add_test(NAME ${test_name} COMMAND "$<TARGET_FILE:${test_name}>")
endforeach()