forked from gregorburger/CityDrain3
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
140 lines (121 loc) · 4.32 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
cmake_minimum_required (VERSION 2.6)
project(cd3)
set(CMAKE_AUTOMOC on)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
message(STATUS "Using Visual C compilers")
set(CMAKE_CXX_FLAGS "/EHsc")
endif()
if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
message(STATUS "Using GNU compilers")
set(CMAKE_CXX_FLAGS "-g -Wall")
endif()
IF(USEQT5)
MESSAGE(STATUS "Using Qt5 for cd3")
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_AUTOMOC ON)
FIND_PACKAGE(Qt5Core)
FIND_PACKAGE(Qt5Concurrent)
FIND_PACKAGE(Qt5Sql)
FIND_PACKAGE(Qt5Xml)
FIND_PACKAGE(Qt5Gui)
FIND_PACKAGE(Qt5Test)
FIND_PACKAGE(Qt5Svg)
FIND_PACKAGE(Qt5Network)
FIND_PACKAGE(Qt5WebKitWidgets)
FIND_PACKAGE(Qt5Widgets)
FIND_PACKAGE(Qt5PrintSupport)
FIND_PACKAGE(Qt5OpenGL)
INCLUDE_DIRECTORIES(${Qt5Core_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Concurrent_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Xml_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Sql_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Gui_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Test_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Svg_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Network_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5WebKitWidgets_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5PrintSupport_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5OpenGL_INCLUDE_DIRS})
ADD_DEFINITIONS(-DUSEQT5)
ELSE()
MESSAGE(STATUS "Using Qt4 for gui")
FIND_PACKAGE(Qt4 REQUIRED)
SET(QT_USE_QTXML true)
SET(QT_USE_QTGUI true)
SET(QT_USE_QTSVG true)
ADD_DEFINITIONS(-DQT_NO_KEYWORDS)
INCLUDE(${QT_USE_FILE})
ENDIF()
set(LIBRARY_OUTPUT_PATH ${cd3_BINARY_DIR})
set(EXECUTABLE_OUTPUT_PATH ${cd3_BINARY_DIR})
set(CD3_FRONTEND_LIBS cd3core)
set(BOOST_COMPONENTS system signals program_options thread date_time filesystem)
include_directories(src/cd3core)
#include python scripting capabilites
option(WITH_PYTHON "Include Python scripting capabilites" ON)
if (WITH_PYTHON)
find_package(PythonLibs 2.7 REQUIRED)
find_package(SWIG REQUIRED)
endif (WITH_PYTHON)
if (WITH_PYTHON AND PYTHONLIBS_FOUND AND SWIG_FOUND)
message(STATUS "Python support enabled")
include_directories(${PYTHON_INCLUDE_DIRS})
else()
add_definitions(-DPYTHON_DISABLED)
message(STATUS "Python support disabled")
endif()
#check for boost which is a definitive requirement for building cd3
if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
set(Boost_USE_STATIC_LIBS ON)
endif()
find_package(Boost 1.38.0 COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
set(Boost_USE_MULTITHREADED ON)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
#check for openmp. also disables the code using qt thread
option(WITH_PARALLEL "Enable parallel code. Needs a OpenMP compiler" ON)
find_package(OpenMP QUIET)
if (WITH_PARALLEL AND OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
message(STATUS "OpenMP is enabled")
else()
add_definitions(-DOPENMP_DISABLED)
message(STATUS "OpenMP is disabled. Consider using a compiler that supports OpenMP")
endif()
if (CMAKE_BUILD_TYPE STREQUAL Debug)
message(STATUS Debug)
add_definitions(-DDEBUG)
else ()
message(STATUS Release)
endif()
#check for graphviz
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(GRAPHVIZ libgvc)
if (GRAPHVIZ_FOUND)
message(STATUS "graphviz found enabling autolayout")
set(WITH_AUTOLAYOUT TRUE)
endif (GRAPHVIZ_FOUND)
endif (PKG_CONFIG_FOUND)
##'NOF CHECKING... BUILDING##
add_subdirectory(src/cd3core)
if (WITH_PYTHON)
add_subdirectory(src/python-swig)
endif()
add_subdirectory(src/app)
add_subdirectory(src/gui)
add_subdirectory(src/plugindoc)
option(WITH_PLUGINDOC "Build the plugindoc app" OFF)
if (WITH_PLUGINDOC)
add_subdirectory(src/plugindoc)
endif()
option(WITH_TESTS "Enable unit testing" OFF)
if (WITH_TESTS)
find_package(GTest REQUIRED)
message(STATUS "Tests enabled")
enable_testing(true)
add_subdirectory(src/tests)
endif()
INCLUDE(Cd3CPack.txt)