-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
46 lines (36 loc) · 1.57 KB
/
CMakeLists.txt
File metadata and controls
46 lines (36 loc) · 1.57 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
cmake_minimum_required(VERSION 3.8)
include("gate/cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.19.123.tar.gz"
SHA1 "57d07480686f82ddc916a5980b4f2a18e5954c2b"
)
project(stack)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(BUILD_TESTS "Build tests" OFF)
option(BUILD_EXAMPLES "Build Examples" OFF)
add_library(${PROJECT_NAME} INTERFACE)
target_sources(${PROJECT_NAME} INTERFACE "${PROJECT_SOURCE_DIR}/include/stack.hpp")
target_include_directories(${PROJECT_NAME} INTERFACE "${PROJECT_SOURCE_DIR}/include")
if(BUILD_TESTS)
hunter_add_package(Catch)
find_package(Catch CONFIG REQUIRED)
enable_testing()
file(GLOB ${PROJECT_NAME}_TEST_SOURCES tests/*.cpp)
add_executable(tests ${${PROJECT_NAME}_TEST_SOURCES})
target_link_libraries(tests ${PROJECT_NAME} Catch::Catch )
add_test(NAME test_name COMMAND tests "-s" "-r" "compact" "--use-colour" "yes")
endif()
if(BUILD_EXAMPLES)
file(GLOB EXAMPLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cpp")
foreach(EXAMPLE_SOURCE ${EXAMPLE_SOURCES})
get_filename_component(EXAMPLE_NAME ${EXAMPLE_SOURCE} NAME_WE)
set(EXAMPLE_TARGET_NAME example_${EXAMPLE_NAME})
add_executable(${EXAMPLE_TARGET_NAME} ${EXAMPLE_SOURCE})
target_link_libraries(${EXAMPLE_TARGET_NAME} ${PROJECT_NAME})
set_target_properties(${EXAMPLE_TARGET_NAME} PROPERTIES OUTPUT_NAME ${EXAMPLE_NAME})
install(TARGETS ${EXAMPLE_TARGET_NAME}
RUNTIME DESTINATION bin
)
endforeach(EXAMPLE_SOURCE ${EXAMPLE_SOURCES})
endif()