-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
29 lines (26 loc) · 1.04 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
cmake_minimum_required(VERSION 3.16)
project(cpp_algorithm)
set(CMAKE_CXX_STANDARD 20)
add_subdirectory(third_party/googletest)
add_subdirectory(third_party/benchmark)
include_directories(
third_party/googletest/googletest/include
third_party/googletest/googlemock/include
third_party/benchmark/include
src/)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/bin)
link_libraries(gtest_main gtest benchmark::benchmark)
#compiler_command.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
enable_testing()
file(GLOB_RECURSE SCPP_SRC_LIST "src/*.cpp")
foreach(v ${SCPP_SRC_LIST})
# message(STATUS "test=${v}")
string(REGEX MATCH "src/.*" relative_path ${v})
string(REGEX REPLACE "src/" "" target_name ${relative_path})
# message(STATUS "relative_path=${target_name}")
string(REGEX REPLACE ".cpp" "" target_name ${target_name})
string(REGEX REPLACE "/|\\." "_" target_name ${target_name})
# message(STATUS "relative_path=${target_name}")
add_executable(${target_name} ${v})
endforeach()