-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
209 lines (167 loc) · 7.06 KB
/
CMakeLists.txt
File metadata and controls
209 lines (167 loc) · 7.06 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# ---------------------------------------------------------
# Hunter
cmake_minimum_required(VERSION 3.0)
cmake_policy(SET CMP0054 NEW)
option(HUNTER_ENABLED "Enable Hunter package manager" ON)
include("cmake/HunterGate.cmake")
#list(APPEND HUNTER_CACHE_SERVERS "https://github.com/ingenue/hunter-cache")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.18.39.tar.gz"
SHA1 "a6fbc056c3d9d7acdaa0a07c575c9352951c2f6c"
)
# ---------------------------------------------------------
# ---------------------------------------------------------
project(syd)
# ---------------------------------------------------------
#----------------------------------------------------------
# cmake policies
cmake_policy(VERSION 3.0)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
# Policy for shared library on OSX
if (APPLE)
cmake_policy(SET CMP0042 NEW) # CMake 3.0
endif (APPLE)
#----------------------------------------------------------
#----------------------------------------------------------
# Use c++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED on)
#----------------------------------------------------------
#----------------------------------------------------------
# Disable some warnings.
add_definitions (
# for auto_ptr in odb
-Wno-deprecated-declarations
)
#----------------------------------------------------------
#----------------------------------------------------------
# hunter dependencies
set(HUNTER_STATUS_DEBUG OFF)
hunter_add_package(Boost COMPONENTS date_time system filesystem)
#hunter_config(Boost VERSION 1.60.0)
hunter_add_package(odb)
hunter_add_package(odb-compiler)
hunter_add_package(odb-sqlite)
#hunter_add_package(ceres-solver)
hunter_add_package(Eigen)
#----------------------------------------------------------
#----------------------------------------------------------
# Basic variables
set(SYD_SOURCE_DIR ${PROJECT_SOURCE_DIR})
set(SYD_BINARY_DIR ${PROJECT_BINARY_DIR})
set(SYD_INCLUDE_FILES " ")
set(SYD_CMAKE_FILES " ")
set(SYD_LIB_FILES " ")
set(SYD_BIN_FILES " ")
#----------------------------------------------------------
#----------------------------------------------------------
# https://github.com/sakra/cotire
# Cotire (compile time reducer) is a CMake module that speeds up the
# build process of CMake based build systems by fully automating
# techniques as precompiled header usage and single compilation unit
# builds for C and C++.
#include(cmake/cotire.cmake)
#----------------------------------------------------------
#----------------------------------------------------------
# cmake include
set(CMAKE_MODULE_PATH "${SYD_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
# the following are dependencies needed to compile against syd
include(cmake/UseSYD.cmake)
#----------------------------------------------------------
#----------------------------------------------------------
## Default to release
## http://cmake.3232098.n2.nabble.com/Default-value-for-CMAKE-BUILD-TYPE-td7550756.html
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
#----------------------------------------------------------
#----------------------------------------------------------
# Output directories.
if(NOT LIBRARY_OUTPUT_PATH)
set (LIBRARY_OUTPUT_PATH ${SYD_BINARY_DIR}/lib CACHE INTERNAL
"Single output directory for building all libraries.")
endif(NOT LIBRARY_OUTPUT_PATH)
if(NOT EXECUTABLE_OUTPUT_PATH)
set (EXECUTABLE_OUTPUT_PATH ${SYD_BINARY_DIR}/bin CACHE INTERNAL
"Single output directory for building all executables.")
endif(NOT EXECUTABLE_OUTPUT_PATH)
mark_as_advanced(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
set(CXX_TEST_PATH ${EXECUTABLE_OUTPUT_PATH})
#----------------------------------------------------------
#----------------------------------------------------------
# not used yet
set(SYD_VERSION_MAJOR "0")
set(SYD_VERSION_MINOR "3")
set(SYD_VERSION_PATCH "0")
#----------------------------------------------------------
#----------------------------------------------------------
## This is required on some system (linux) to allow linking
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC" )
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fPIC" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" )
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
if(NOT APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp" )
endif(NOT APPLE)
# -Wno-deprecated-declarations ?
#----------------------------------------------------------
# ----------------------------------------------------------
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#----------------------------------------------------------
# ----------------------------------------------------------
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj")
endif(MSVC)
#----------------------------------------------------------
#----------------------------------------------------------
# define the set of libraries
set(SYD_CORE_LIBRARIES
sydCore
sydFit
sydItkUtils
${CERES_LIBRARIES} glog
${SQLITE3_LIBRARY}
${ODB_SQLITE_LIBRARIES}
${ODB_LIBODB_LIBRARIES}
z
${ITK_LIBRARIES}
Boost::filesystem
Boost::system)
set(SYD_COMMON_DB_LIBRARY sydCommonDatabase ${SYD_CORE_LIBRARIES})
set(SYD_STD_DB_LIBRARY sydStandardDatabase ${SYD_COMMON_DB_LIBRARY})
# ----------------------------------------------------------
# ----------------------------------------------------------
# Include main sources
add_subdirectory(${SYD_SOURCE_DIR}/src)
#----------------------------------------------------------
#----------------------------------------------------------
# Set some variable
SET(SYD_LIBRARY_PATH "${LIBRARY_OUTPUT_PATH}")
SET(SYD_EXECUTABLE_PATH "${EXECUTABLE_OUTPUT_PATH}")
LIST(APPEND SYD_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/core")
LIST(APPEND SYD_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/common_db")
LIST(APPEND SYD_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/std_db")
LIST(APPEND SYD_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/plot")
# Generate SYDConfig.cmake for the build tree.
SET (SYD_USE_FILE "${SYD_SOURCE_DIR}/cmake/UseSYD.cmake")
SET (SYD_LIBRARY_DIRS ${SYD_LIBRARY_PATH})
CONFIGURE_FILE (cmake/SYDConfig.cmake.in SYDConfig.cmake @ONLY)
#----------------------------------------------------------
#----------------------------------------------------------
# no install policy yet
# DD(SYD_INCLUDE_FILES)
# set(SYD_CMAKE_FILES ${PROJECT_SOURCE_DIR}/cmake/UseSYD.cmake)
# INSTALL(FILES ${SYD_INCLUDE_FILES} DESTINATION include)
# INSTALL(FILES ${SYD_CMAKE_FILES} DESTINATION cmake)
# INSTALL(FILES ${SYD_LIB_FILES} DESTINATION lib)
# INSTALL(FILES ${SYD_BIN_FILES} DESTINATION bin)
#----------------------------------------------------------