-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCMakeLists.txt
109 lines (91 loc) · 2.79 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
cmake_minimum_required(VERSION 3.13)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_COLOR_MAKEFILE ON)
project(Galileo)
# Enable parallelism in the GNU Standard C++ Library
add_definitions(-D_GLIBCXX_PARALLEL)
option(BUILD_WITH_OPENMP "Build with OpenMP" OFF)
find_package(casadi REQUIRED)
find_package(pinocchio REQUIRED)
find_package (Eigen3 REQUIRED NO_MODULE)
find_package(Boost REQUIRED COMPONENTS iostreams)
if(BUILD_WITH_OPENMP)
find_package(OpenMP REQUIRED)
if(OpenMP_CXX_FOUND)
message(STATUS "OpenMP found")
else()
message(STATUS "OpenMP not found")
endif()
endif()
# libgalileo
add_library(galileo SHARED galileo.cc)
set_target_properties(galileo PROPERTIES LINKER_LANGUAGE CXX)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "-g -O3 -fopenmp -lgomp -no-pie -ggdb -Wall \
-Wextra -Wcast-align -Wdisabled-optimization -Wformat=2 \
-Winit-self -Wmissing-include-dirs -Woverloaded-virtual \
-Wshadow -Wsign-promo")
add_subdirectory(third-party)
add_subdirectory(galileo)
target_link_libraries(galileo
PUBLIC
casadi
pinocchio::pinocchio
Eigen3::Eigen
${Boost_LIBRARIES}
)
if(BUILD_WITH_OPENMP)
target_link_libraries(galileo
PUBLIC
OpenMP::OpenMP_CXX
)
endif(BUILD_WITH_OPENMP)
target_include_directories(galileo
PUBLIC
${Boost_INCLUDE_DIRS}
)
# Install the "galileoConfig.cmake" file and export the target
install(TARGETS galileo
EXPORT galileoTargets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
# FILE_SET HEADERS DESTINATION include
)
# Generate and install the export targets for "galileo"
install(EXPORT galileoTargets
FILE galileoTargets.cmake
NAMESPACE galileo::
DESTINATION lib/cmake/galileo
)
# Generate and install galileoConfig.cmake
include(CMakePackageConfigHelpers)
# Generate ${PROJECT_NAME}Config.cmake
configure_package_config_file(
galileoConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/galileoConfig.cmake
INSTALL_DESTINATION lib/cmake/galileo
)
# Install the generated "galileoConfig.cmake" file
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/galileoConfig.cmake
DESTINATION lib/cmake/galileo
)
install(
FILES ${CMAKE_MODULE_PATH}/FindCASADI.cmake
DESTINATION lib/cmake/galileo/Modules
)
# Uninstall target
# Source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()
add_subdirectory(examples)