Skip to content

Commit 401c89f

Browse files
CMake utility targets for categories
1 parent 40ad909 commit 401c89f

File tree

2 files changed

+49
-20
lines changed

2 files changed

+49
-20
lines changed

CMakeLists.txt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ install(
7676
PATTERN "${CMAKE_CURRENT_BINARY_DIR}/include/beman/any_view/*.hpp"
7777
)
7878

79-
macro(beman_add_executable)
79+
function(beman_add_executable)
8080
set(options)
8181
set(oneValueArgs CATEGORY TARGET)
8282
set(multiValueArgs SOURCES LIBRARIES)
@@ -90,13 +90,8 @@ macro(beman_add_executable)
9090
)
9191

9292
# [CMAKE.TARGET_NAMES]
93-
set(target
94-
"beman.any_view.${beman_executable_CATEGORY}.${beman_executable_TARGET}"
95-
)
96-
97-
if(NOT beman_executable_SOURCES)
98-
set(beman_executable_SOURCES "${beman_executable_TARGET}.cpp")
99-
endif()
93+
set(category beman.any_view.${beman_executable_CATEGORY})
94+
set(target ${category}.${beman_executable_TARGET})
10095

10196
add_executable(${target})
10297
# [CMAKE.PASSIVE_PROJECTS]
@@ -107,7 +102,13 @@ macro(beman_add_executable)
107102
${target}
108103
PRIVATE beman::any_view ${beman_executable_LIBRARIES}
109104
)
110-
endmacro()
105+
106+
if(NOT TARGET ${category})
107+
add_custom_target(${category})
108+
endif()
109+
110+
add_dependencies(${category} ${target})
111+
endfunction()
111112

112113
if(BEMAN_ANY_VIEW_BUILD_TESTS)
113114
enable_testing()

tests/beman/any_view/CMakeLists.txt

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,47 @@ FetchContent_MakeAvailable(benchmark googletest)
2020

2121
include(GoogleTest)
2222

23-
function(beman_add_benchmark)
24-
beman_add_executable(${ARGN} CATEGORY benchmarks LIBRARIES benchmark::benchmark)
23+
function(beman_add_benchmark name)
24+
beman_add_executable(
25+
TARGET ${name}
26+
SOURCES ${name}.benchmark.cpp ${ARGN}
27+
CATEGORY benchmarks
28+
LIBRARIES benchmark::benchmark
29+
)
2530
endfunction()
2631

27-
function(beman_add_test)
28-
beman_add_executable(${ARGN} CATEGORY tests LIBRARIES GTest::gtest GTest::gtest_main)
29-
gtest_discover_tests(${target})
32+
function(beman_add_tests)
33+
foreach(name ${ARGN})
34+
beman_add_executable(
35+
TARGET ${name}
36+
SOURCES ${name}.test.cpp
37+
CATEGORY tests
38+
LIBRARIES GTest::gtest GTest::gtest_main
39+
)
40+
gtest_discover_tests(beman.any_view.tests.${name})
41+
endforeach()
3042
endfunction()
3143

32-
beman_add_benchmark(TARGET all SOURCES all.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp detail/reserved.cpp)
33-
beman_add_benchmark(TARGET take SOURCES take.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp detail/reserved.cpp)
44+
beman_add_benchmark(
45+
all
46+
detail/eager.cpp
47+
detail/fused.cpp
48+
detail/lazy.cpp
49+
detail/products.cpp
50+
detail/reserved.cpp
51+
)
52+
beman_add_benchmark(
53+
take
54+
detail/eager.cpp
55+
detail/fused.cpp
56+
detail/lazy.cpp
57+
detail/products.cpp
58+
detail/reserved.cpp
59+
)
3460

35-
beman_add_test(TARGET concepts SOURCES concepts.test.cpp)
36-
beman_add_test(TARGET constexpr SOURCES constexpr.test.cpp)
37-
beman_add_test(TARGET sfinae SOURCES sfinae.test.cpp)
38-
beman_add_test(TARGET type_traits SOURCES type_traits.test.cpp)
61+
beman_add_tests(
62+
concepts
63+
constexpr
64+
sfinae
65+
type_traits
66+
)

0 commit comments

Comments
 (0)