-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
38 lines (29 loc) · 1.15 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
cmake_minimum_required(VERSION 3.20)
project(SparseX VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
option(SPARSEX_DISABLE_TESTS "Disable unit tests" OFF)
file(GLOB SOURCE_FILES src/*.cc)
list(FILTER SOURCE_FILES EXCLUDE REGEX ".*_test\\.cc")
add_library(sparsex STATIC ${SOURCE_FILES})
target_include_directories(sparsex PUBLIC src)
file(GLOB EXEC_FILES "src/main/main_*.cc")
foreach(EXEC_FILE ${EXEC_FILES})
get_filename_component(EXEC_NAME ${EXEC_FILE} NAME_WE)
add_executable(${EXEC_NAME} ${EXEC_FILE})
target_link_libraries(${EXEC_NAME} PRIVATE sparsex)
endforeach()
if (NOT SPARSEX_DISABLE_TESTS)
file(GLOB TEST_FILES "src/*_test.cc")
add_subdirectory(lib/googletest)
include(GoogleTest)
foreach(TEST_FILE ${TEST_FILES})
get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE)
add_executable(${TEST_NAME} ${TEST_FILE})
target_link_libraries(${TEST_NAME} sparsex gtest gtest_main pthread)
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
gtest_discover_tests(${TEST_NAME})
endforeach()
enable_testing()
endif()