blob: 63720f6bee8b61228b58324ba5ccbf2e1283b7b6 [file] [log] [blame]
Brian Silvermanda861352019-02-02 16:42:28 -08001cmake_minimum_required(VERSION 3.0)
2
3project(optional)
4
5option(OPTIONAL_ENABLE_TESTS "Enable tests." ON)
6option(OPTIONAL_ENABLE_DOCS "Enable documentation." ON)
7
8add_library(optional INTERFACE)
9target_sources(optional INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/tl/optional.hpp)
10target_include_directories(optional INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/tl)
11
12if(OPTIONAL_ENABLE_TESTS)
13 # Prepare "Catch" library for other executables
14 set(CATCH_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test)
15 add_library(Catch INTERFACE)
16 target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR})
17
18 # Make test executable
19 set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/tests/main.cpp
20 ${CMAKE_CURRENT_SOURCE_DIR}/tests/noexcept.cpp
21 ${CMAKE_CURRENT_SOURCE_DIR}/tests/make_optional.cpp
22 ${CMAKE_CURRENT_SOURCE_DIR}/tests/in_place.cpp
23 ${CMAKE_CURRENT_SOURCE_DIR}/tests/relops.cpp
24 ${CMAKE_CURRENT_SOURCE_DIR}/tests/observers.cpp
25 ${CMAKE_CURRENT_SOURCE_DIR}/tests/extensions.cpp
26 ${CMAKE_CURRENT_SOURCE_DIR}/tests/emplace.cpp
27 ${CMAKE_CURRENT_SOURCE_DIR}/tests/constexpr.cpp
28 ${CMAKE_CURRENT_SOURCE_DIR}/tests/constructors.cpp
29 ${CMAKE_CURRENT_SOURCE_DIR}/tests/assignment.cpp
30 ${CMAKE_CURRENT_SOURCE_DIR}/tests/issues.cpp
31 ${CMAKE_CURRENT_SOURCE_DIR}/tests/bases.cpp
32 ${CMAKE_CURRENT_SOURCE_DIR}/tests/nullopt.cpp)
33
34 add_executable(tests ${TEST_SOURCES})
35
36 target_link_libraries(tests Catch optional)
37
38 set(CXXSTD 14 CACHE STRING "C++ standard to use, default C++14")
39 set_property(TARGET tests PROPERTY CXX_STANDARD ${CXXSTD})
40endif()
41
42if(OPTIONAL_ENABLE_DOCS)
43 find_package(standardese) # find standardese after installation
44
45 # generates a custom target that will run standardese to generate the documentation
46 if(standardese_FOUND)
47 standardese_generate(optional
48 INCLUDE_DIRECTORY tl
49 CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/standardese.config
50 INPUT tl/optional.hpp)
51 endif()
52endif()