-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
50 lines (40 loc) · 1.49 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.11)
project(wm)
set(CMAKE_SUPPRESS_REGENERATION true)
set(CMAKE_CXX_STANDARD 20)
# Just annoying.
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-template-keyword")
elsif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX")
endif()
file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.c" "src/*.cxx")
file(GLOB_RECURSE TEST_SOURCES "tests/*.cpp" "tests/*.c" "test/*.cxx")
file(GLOB_RECURSE BENCHMARK_SOURCES "benchmarks/*.cpp" "benchmarks/*.c" "benchmarks/*.cxx")
file(GLOB HEADERS "include/*.hpp" "include/*.h")
add_executable(${CMAKE_PROJECT_NAME} ${SOURCES} ${HEADERS})
target_include_directories(
${CMAKE_PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/include
)
# Make the start-up project
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})
# Google Benchmark setup
find_package(benchmark CONFIG REQUIRED)
add_executable(Benchmark ${BENCHMARK_SOURCES})
target_link_libraries(Benchmark PRIVATE benchmark::benchmark benchmark::benchmark_main)
target_include_directories(
Benchmark
PRIVATE
${PROJECT_SOURCE_DIR}/include
)
# GTest setup
find_package(GTest CONFIG REQUIRED)
add_executable(Test ${TEST_SOURCES})
target_link_libraries(Test PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)
target_include_directories(
Test
PRIVATE
${PROJECT_SOURCE_DIR}/include
)