-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
executable file
·83 lines (72 loc) · 2.74 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
cmake_minimum_required(VERSION 3.4)
project(MooViE
VERSION 1.0.0
DESCRIPTION "Visualization tool for the results of multi-objective optimization"
LANGUAGES NONE)
# Set C++ language standard
set(CMAKE_CXX_STANDARD 14)
# Set module path for finding external modules
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# CMake build options
option(BUILD_LIB "Build the basic library" ON)
option(BUILD_DOCUMENTATION "Build API documentation" OFF)
if (BUILD_LIB)
enable_language(CXX C)
set(BUILD_GUI "Build QT Gui" ON)
set(BUILD_TESTS "Build tests for the library" OFF)
else()
unset(BUILD_GUI CACHE)
unset(BUILD_TESTS CACHE)
endif()
if (BUILD_GUI)
set(QT_VERSION QT6 CACHE STRING "Choose QT version")
set_property(CACHE QT_VERSION PROPERTY STRINGS QT6 QT5)
else()
unset(QT_VERSION CACHE)
endif()
# Set install destination variables
set(DEST_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)
set(DEST_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib)
set(DEST_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include/moovie)
set(DEST_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/moovie)
set(DEST_DESKTOP_DIR ${CMAKE_INSTALL_PREFIX}/share/applications)
set(DEST_PIXMAP_DIR ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
set(CMAKE_INSTALL_RPATH ${DEST_LIB_DIR})
# GNU debug flags
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fno-inline -fprofile-arcs -ftest-coverage --coverage")
endif()
# MooViE sources
if (BUILD_LIB)
add_subdirectory(src/main)
endif()
# Test sources
if (BUILD_TESTS)
include(CTest)
add_subdirectory(src/test)
endif(BUILD_TESTS)
# Documentation
if (BUILD_DOCUMENTATION)
find_package(Doxygen REQUIRED dot)
if (DOXYGEN_FOUND)
configure_file(${PROJECT_SOURCE_DIR}/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile)
add_custom_target(doc
ALL
COMMENT "Generating API documentation with Doxygen" VERBATIM)
add_custom_command(TARGET doc
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile)
# Build html pages using sphinx
add_custom_command(TARGET doc
COMMAND make html
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs)
add_custom_command(TARGET doc
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/docs/source/images
${PROJECT_SOURCE_DIR}/docs/build/html/_images)
# Install html pages and reference manual
# Install README file
install (FILES README.md DESTINATION ${DEST_DOC_DIR})
else(DOXYGEN_FOUND)
message(FATAL_ERROR "Doxygen and dot are needed to build the documentation. "
"Either install Doxygen and dot or disable BUILD_DOCUMENTATION.")
endif(DOXYGEN_FOUND)
endif(BUILD_DOCUMENTATION)