-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
101 lines (82 loc) · 4.15 KB
/
CMakeLists.txt
File metadata and controls
101 lines (82 loc) · 4.15 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#
# Copyright (C) 2018 Dr. Michael Steffens
#
# SPDX-License-Identifier: BSL-1.0
#
cmake_minimum_required(VERSION 3.0)
project(Polymorphic VERSION 1.1.0 LANGUAGES CXX)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS NO)
add_library(Containers INTERFACE)
add_library(${PROJECT_NAME}::Containers ALIAS Containers)
target_include_directories(Containers INTERFACE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/test>
$<INSTALL_INTERFACE:include>)
install(TARGETS Containers EXPORT PolymorphicTargets)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.h")
install(EXPORT PolymorphicTargets NAMESPACE ${PROJECT_NAME}:: DESTINATION share/Polymorphic/cmake)
configure_file(cmake/PolymorphicConfig.cmake.in PolymorphicConfig.cmake @ONLY)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/PolymorphicConfigVersion.cmake COMPATIBILITY SameMajorVersion)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/PolymorphicConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/PolymorphicConfigVersion.cmake
DESTINATION share/Polymorphic/cmake)
enable_testing()
# On demand build of tests. See https://cmake.org/Wiki/CMakeEmulateMakeCheck
if(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process)
else()
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process -C $(Configuration))
endif()
add_executable(vectorTest EXCLUDE_FROM_ALL test/vectorTest.cpp)
target_link_libraries(vectorTest ${PROJECT_NAME}::Containers)
add_test(NAME VectorTest COMMAND vectorTest)
add_dependencies(check vectorTest)
add_executable(dequeTest EXCLUDE_FROM_ALL test/dequeTest.cpp)
target_link_libraries(dequeTest ${PROJECT_NAME}::Containers)
add_test(NAME DequeTest COMMAND dequeTest)
add_dependencies(check dequeTest)
add_executable(listTest EXCLUDE_FROM_ALL test/listTest.cpp)
target_link_libraries(listTest ${PROJECT_NAME}::Containers)
add_test(NAME ListTest COMMAND listTest)
add_dependencies(check listTest)
add_executable(forwardListTest EXCLUDE_FROM_ALL test/forwardListTest.cpp)
target_link_libraries(forwardListTest ${PROJECT_NAME}::Containers)
add_test(NAME ForwardListTest COMMAND forwardListTest)
add_dependencies(check forwardListTest)
add_executable(mapTest EXCLUDE_FROM_ALL test/mapTest.cpp)
target_link_libraries(mapTest ${PROJECT_NAME}::Containers)
add_test(NAME MapTest COMMAND mapTest)
add_dependencies(check mapTest)
add_executable(multimapTest EXCLUDE_FROM_ALL test/multimapTest.cpp)
target_link_libraries(multimapTest ${PROJECT_NAME}::Containers)
add_test(NAME MultimapTest COMMAND multimapTest)
add_dependencies(check multimapTest)
add_executable(unorderedMapTest EXCLUDE_FROM_ALL test/unorderedMapTest.cpp)
target_link_libraries(unorderedMapTest ${PROJECT_NAME}::Containers)
add_test(NAME UnorderedMapTest COMMAND unorderedMapTest)
add_dependencies(check unorderedMapTest)
add_executable(unorderedMultimapTest EXCLUDE_FROM_ALL test/unorderedMultimapTest.cpp)
target_link_libraries(unorderedMultimapTest ${PROJECT_NAME}::Containers)
add_test(NAME UnorderedMultimapTest COMMAND unorderedMultimapTest)
add_dependencies(check unorderedMultimapTest)
add_executable(setTest EXCLUDE_FROM_ALL test/setTest.cpp)
target_link_libraries(setTest ${PROJECT_NAME}::Containers)
add_test(NAME SetTest COMMAND setTest)
add_dependencies(check setTest)
add_executable(multisetTest EXCLUDE_FROM_ALL test/multisetTest.cpp)
target_link_libraries(multisetTest ${PROJECT_NAME}::Containers)
add_test(NAME MultisetTest COMMAND multisetTest)
add_dependencies(check multisetTest)
add_executable(unorderedSetTest EXCLUDE_FROM_ALL test/unorderedSetTest.cpp)
target_link_libraries(unorderedSetTest ${PROJECT_NAME}::Containers)
add_test(NAME UnorderedSetTest COMMAND unorderedSetTest)
add_dependencies(check unorderedSetTest)
add_executable(unorderedMultisetTest EXCLUDE_FROM_ALL test/unorderedMultisetTest.cpp)
target_link_libraries(unorderedMultisetTest ${PROJECT_NAME}::Containers)
add_test(NAME UnorderedMultisetTest COMMAND unorderedMultisetTest)
add_dependencies(check unorderedMultisetTest)