-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
69 lines (51 loc) · 2.67 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
cmake_minimum_required(VERSION 3.8.2)
project(libfs)
##### Build the unit test executable. #####
set(SOURCE_FILES src/main.cpp src/libfs_tests.cpp include/libfs.h)
include_directories( include third_party ) # For the unit test framework (catch.hpp).
add_executable(run_libfs_tests ${SOURCE_FILES})
set_property(TARGET run_libfs_tests PROPERTY CXX_STANDARD 11)
set_property(TARGET run_libfs_tests PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET run_libfs_tests PROPERTY CXX_EXTENSIONS OFF)
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
target_compile_options( run_libfs_tests PRIVATE -Wall -Wextra -pedantic -Werror )
endif()
if( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
target_compile_options( run_libfs_tests PRIVATE /W3 )
target_compile_definitions(run_libfs_tests PRIVATE _CRT_SECURE_NO_WARNINGS) # Disable MSVCC non-standard warnings/errors about fopen, strcpy, etc.
endif()
##### Build the demo app executable. #####
set(SOURCE_FILES_DEMO src/demo_main.cpp include/libfs.h)
add_executable(demo_libfs ${SOURCE_FILES_DEMO})
set_property(TARGET demo_libfs PROPERTY CXX_STANDARD 11)
set_property(TARGET demo_libfs PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET demo_libfs PROPERTY CXX_EXTENSIONS OFF)
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
target_compile_options( demo_libfs PRIVATE -Wall -Wextra -pedantic -Werror )
endif()
if( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
target_compile_options( demo_libfs PRIVATE /W3 )
target_compile_definitions(demo_libfs PRIVATE _CRT_SECURE_NO_WARNINGS) # Disable MSVCC non-standard warnings/errors about fopen, strcpy, etc.
endif()
##### Build the documentation using Doxygen. One needs to run 'make doc' to actually do this. #####
## Hint: if this does not work anymore on your system after software changes, delete the 'CMakeCache.txt' file and try again.
find_package(Doxygen)
option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" OFF)
if(BUILD_DOCUMENTATION)
if(NOT DOXYGEN_FOUND)
message(FATAL_ERROR "Doxygen not found, cannot build the documentation.")
else()
message("Doxygen found, building docs.")
endif()
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/doxyfile_cmake)
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
message("Doxygen build started.")
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile_in}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
else()
message("Not building docs")
endif()