forked from d-bahr/CRCpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
50 lines (42 loc) · 1.46 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
39
40
41
42
43
44
45
46
47
48
49
50
cmake_minimum_required (VERSION 3.5)
project(CRCpp)
# Build type
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RELEASE")
endif ()
# Build options
option(BUILD_DOC "Build documentation" OFF)
option(BUILD_TEST "Build test" ON)
# Compiler options
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Header file(s)
add_library(${PROJECT_NAME} INTERFACE)
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/inc)
# Installation
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/ DESTINATION include)
# Documentation
if (BUILD_DOC)
find_package(Doxygen)
if (DOXYGEN_FOUND)
set(DOXYGEN_GENERATE_HTML YES)
add_custom_target(doxygen
COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile.dox
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen)
else (DOXYGEN_FOUND)
message("Doxygen must be installed to generate documentation")
endif (DOXYGEN_FOUND)
endif ()
# Unit tests
if (BUILD_TEST)
include(CTest)
add_executable(unittest ${CMAKE_CURRENT_SOURCE_DIR}/test/src/main.cpp)
set_target_properties(unittest PROPERTIES RUNTIME_OUTPUT_DIRECTORY test/bin)
target_link_libraries(unittest ${PROJECT_NAME})
add_test(NAME unittest
COMMAND unittest
WORKING_DIRECTORY ${RUNTIME_OUTPUT_DIRECTORY})
add_custom_target(tests
COMMAND ${CMAKE_CTEST_COMMAND}
DEPENDS unittest)
endif ()