forked from filtering-library/fl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
142 lines (121 loc) · 4.13 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
141
142
cmake_minimum_required(VERSION 2.8.3)
project(fl)
############################
# Options #
############################
option(fl_USE_CATKIN "Use catkin build system" ON)
option(fl_USE_RANDOM_SEED "Use random seeds for number generators" ON)
set(fl_FLOATING_POINT_TYPE "double" CACHE STRING "fl::Real floating point type")
option(fl_BUILD_TESTS "Compile tests" OFF)
############################
# Flags #
############################
# Enable c++11 GCC 4.6 or greater required
add_definitions(-DEIGEN_STACK_ALLOCATION_LIMIT=1638400)
add_definitions(-DEIGEN_MPL2_ONLY=1)
add_definitions(-std=c++0x -fno-omit-frame-pointer)
add_definitions(-DPROFILING_ON=1) #print profiling output
add_definitions(-Wall)
add_definitions(-Wno-unused-local-typedefs)
add_definitions(-Wno-deprecated-declarations)
add_definitions(-Wno-comment)
# for eigen-3.1.2
add_definitions(-Wno-deprecated-register)
############################
# Setup #
############################
#set(fl_INCLUDE_DIRS include)
set(fl_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set(CMAKE_MODULE_PATH ${fl_MODULE_PATH})
include(${fl_MODULE_PATH}/definitions.cmake)
############################
# Exports ##
############################
#set(fl_FOUND TRUE PARENT_SCOPE)
#set(fl_INCLUDE_DIRS ../fl/include ${Eigen_INCLUDE_DIRS} PARENT_SCOPE)
#set(fl_DEFINITIONS ${Eigen_DEFINITIONS} PARENT_SCOPE)
#set(fl_DEPENDS Eigen PARENT_SCOPE)
############################
# Library Version #
############################
#include(${fl_MODULE_PATH}/version.cmake)
############################
# Dependencies ##
############################
if(NOT TARGET Eigen3::Eigen)
find_package(Eigen REQUIRED)
include_directories(${Eigen_INCLUDE_DIRS})
add_definitions(${Eigen_DEFINITIONS})
else()
get_target_property(EIGEN3_INCLUDE_DIR Eigen3::Eigen
INTERFACE_INCLUDE_DIRECTORIES)
endif()
find_package(Boost REQUIRED)
#find_package(OpenMP)
#if(OPENMP_FOUND)
# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
# set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
# message (WARNING "${OpenMP_C_FLAGS} ${OpenMP_CXX_FLAGS}")
#endif()
############################
## catkin #
############################
# if(fl_USE_CATKIN)
# find_package(catkin REQUIRED)
# endif(fl_USE_CATKIN)
# if(catkin_FOUND AND fl_USE_CATKIN)
# set(fl_USING_CATKIN YES)
# catkin_package(INCLUDE_DIRS include DEPENDS Eigen Boost)
# else(catkin_FOUND AND fl_USE_CATKIN)
# set(fl_USING_CATKIN NO)
# endif(catkin_FOUND AND fl_USE_CATKIN)
############################
# Documentation Generation #
############################
#
# How to generate the documentation:
#
# $ cd /path/to/fl
# $ mkdir build
# $ cd build
# $ cmake ..
# $ make doc_fl
#
# The documentation will be generated within /path/to/fl/build/doc
#
set(MIN_DOXYGEN_VERSION 1.8.4)
find_package(Doxygen ${MIN_DOXYGEN_VERSION})
include(${fl_MODULE_PATH}/doxygen.cmake)
############################
# Library info summary #
############################
#include(${fl_MODULE_PATH}/info.cmake)
#info_begin()
# info_project("::fl:: Filtering Library" ${PROJECT_VERSION})
# info_header("Setup:")
# info_item("Using Catkin" "${fl_USING_CATKIN}")
# info_item("Using random seed" "${fl_USE_RANDOM_SEED}")
# info_item("Using fl::Real floating point type" ${fl_FLOATING_POINT_TYPE})
#info_end()
############################
# Build #
############################
file(GLOB_RECURSE header_files include/${PROJECT_NAME}/*.hpp
include/${PROJECT_NAME}/*.h
include/ff/*.hpp
include/ff/*.h)
add_library(${PROJECT_NAME} ${header_files})
target_include_directories(${PROJECT_NAME} PUBLIC
${Boost_INCLUDE_DIRS}
include
)
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
############################
# Tests #
############################
if(fl_BUILD_TESTS)
enable_testing()
include(${fl_MODULE_PATH}/gtest.cmake)
add_subdirectory(test)
endif()