-
-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
66 lines (53 loc) · 2.09 KB
/
Copy pathCMakeLists.txt
File metadata and controls
66 lines (53 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
project(thread-pool-benchmarks LANGUAGES CXX)
# --- Import tools ----
include(../cmake/tools.cmake)
# ---- Dependencies ----
include(../cmake/CPM.cmake)
CPMAddPackage(
NAME nanobench
GITHUB_REPOSITORY martinus/nanobench
VERSION 4.3.11
GIT_SHALLOW
)
CPMAddPackage("gh:doctest/doctest@2.4.12")
CPMAddPackage(
NAME bshoshany
GITHUB_REPOSITORY bshoshany/thread-pool
VERSION 3.5.0
GIT_SHALLOW
)
if(bshoshany_ADDED)
add_library(bshoshany INTERFACE IMPORTED)
target_include_directories(bshoshany INTERFACE ${bshoshany_SOURCE_DIR}/include)
endif()
CPMAddPackage(
NAME ConorWilliams_ThreadPool
GITHUB_REPOSITORY ConorWilliams/Threadpool
VERSION 2.1.1
GIT_TAG a757265d75c189ad0fd0e429c166efb6281f2770
GIT_SHALLOW
)
CPMAddPackage(
NAME task-thread-pool
GITHUB_REPOSITORY alugowski/task-thread-pool
VERSION 1.0.6
GIT_SHALLOW
)
# ---- Create binary ----
file(GLOB sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp)
file(GLOB headers CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
add_executable(${PROJECT_NAME} ${headers} ${sources})
target_link_libraries(${PROJECT_NAME} nanobench doctest::doctest bshoshany RiftenThiefpool dp::thread-pool task-thread-pool::task-thread-pool)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
# enable compiler warnings
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(${PROJECT_NAME} INTERFACE -Wall -Wpedantic -Wextra)
elseif(MSVC)
target_compile_options(${PROJECT_NAME} INTERFACE /W4)
target_compile_definitions(${PROJECT_NAME} PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,MSVC>:DOCTEST_CONFIG_USE_STD_HEADERS>)
endif()
string(TOLOWER ${CMAKE_CXX_COMPILER_ID} compiler_id)
set(results_markdown_file "${CMAKE_CURRENT_SOURCE_DIR}/results/benchmark_results_${compiler_id}.md")
target_compile_definitions(${PROJECT_NAME} PUBLIC RESULTS_MARKDOWN_FILE="${results_markdown_file}")