-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
160 lines (126 loc) · 3.45 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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
cmake_minimum_required(VERSION 3.16.3)
project(eigen_utils)
if("$ENV{ROS_VERSION}" STREQUAL "1")
# gersemi: off
set(CMAKE_CXX_STANDARD 17)
add_compile_options(-Wall -Wextra -Wpedantic)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CATKIN_PACKAGE_HEADER_DEPENDENCIES
)
## Create a list of catkin package dependencies, now for both header and source files.
set(CATKIN_PACKAGE_DEPENDENCIES
${CATKIN_PACKAGE_HEADER_DEPENDENCIES}
)
## Find catkin dependencies for building this package.
find_package(catkin REQUIRED
COMPONENTS
${CATKIN_PACKAGE_DEPENDENCIES}
)
find_package(Eigen3 REQUIRED)
catkin_package(
INCLUDE_DIRS
include
${EIGEN3_INCLUDE_DIR}
CATKIN_DEPENDS
${CATKIN_PACKAGE_HEADER_DEPENDENCIES}
)
#############
## Install ##
#############
install(
DIRECTORY
include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
install(
FILES
README.md
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
##########
## Test ##
##########
## GTest.
if(CATKIN_ENABLE_TESTING)
find_package(catkin REQUIRED
COMPONENTS
${CATKIN_PACKAGE_DEPENDENCIES}
)
# Test testing.hpp
catkin_add_gtest(test_${PROJECT_NAME}_testing
test/TestEigenUtilsTesting.cpp
)
target_include_directories(test_${PROJECT_NAME}_testing PRIVATE
include
)
target_include_directories(test_${PROJECT_NAME}_testing SYSTEM PUBLIC
${catkin_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIR}
)
target_link_libraries(test_${PROJECT_NAME}_testing
gtest_main
${catkin_LIBRARIES}
)
find_package(cmake_code_coverage QUIET)
if(cmake_code_coverage_FOUND)
add_gtest_coverage(
TEST_BUILD_TARGETS
test_${PROJECT_NAME}_testing
)
endif(cmake_code_coverage_FOUND)
endif()
###########
## Clang ##
###########
find_package(cmake_clang_tools QUIET)
if(cmake_clang_tools_FOUND)
add_default_clang_tooling()
endif(cmake_clang_tools_FOUND)
# gersemi: on
else() # ROS version 2
###############
## Configure ##
###############
set(CMAKE_CXX_STANDARD 17)
add_compile_options(-Wall -Wextra -Wpedantic)
set(PACKAGE_DEPENDENCIES Eigen3)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(ament_cmake REQUIRED)
foreach(PKG ${PACKAGE_DEPENDENCIES})
find_package(${PKG} REQUIRED)
endforeach()
###########
## Build ##
###########
add_library(${PROJECT_NAME} INTERFACE)
target_link_libraries(${PROJECT_NAME} INTERFACE Eigen3::Eigen)
target_include_directories(
${PROJECT_NAME}
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
)
ament_target_dependencies(${PROJECT_NAME} ${PACKAGE_DEPENDENCIES})
#############
## Install ##
#############
install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME})
ament_export_dependencies(${PACKAGE_DEPENDENCIES})
##########
## Test ##
##########
if(BUILD_TESTING)
find_package(ament_cmake_gtest REQUIRED)
# Test testing.hpp
ament_add_gtest(
test_${PROJECT_NAME}_testing
test/TestEigenUtilsTesting.cpp
)
target_link_libraries(test_${PROJECT_NAME}_testing ${PROJECT_NAME})
find_package(cmake_code_coverage QUIET)
if(cmake_code_coverage_FOUND)
add_gtest_coverage(TEST_BUILD_TARGETS test_${PROJECT_NAME}_testing)
endif(cmake_code_coverage_FOUND)
endif()
ament_package()
endif()