-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
134 lines (100 loc) · 3.01 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
# Name: CMakeLists.txt
# Micras Team
# Brief: CMake configuration file for the project
# 04/2024
cmake_minimum_required(VERSION 3.16.3)
project(micras_simulation)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 20)
endif()
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 17)
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
include(cmake/linter.cmake)
include(cmake/build_type.cmake)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
add_subdirectory(gazebo/micras_plugin)
find_package(ament_cmake REQUIRED)
set(ROS_CODE_DEPS
rclcpp
std_msgs
sensor_msgs
geometry_msgs
nav_msgs
)
foreach(dependency ${ROS_CODE_DEPS})
find_package(${dependency} REQUIRED)
endforeach()
file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "src/*/*.c*")
file(GLOB_RECURSE PROJECT_TESTS CONFIGURE_DEPENDS "MicrasFirmware/tests/src/*/*.c*")
add_library(${PROJECT_NAME}_lib
${PROJECT_SOURCES}
tests/src/test_core.cpp
)
ament_target_dependencies(${PROJECT_NAME}_lib ${ROS_CODE_DEPS})
target_include_directories(${PROJECT_NAME}_lib PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/config>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/tests/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MicrasFirmware/include>
)
add_executable(micras_node
src/micras_node.cpp
MicrasFirmware/src/micras_controller.cpp
)
ament_target_dependencies(micras_node ${ROS_CODE_DEPS})
target_link_libraries(micras_node
${PROJECT_NAME}_lib
)
add_dependencies(micras_node MicrasPlugin)
install(DIRECTORY include
DESTINATION include
)
install(DIRECTORY gazebo
DESTINATION share/${PROJECT_NAME}
PATTERN gazebo/micras_plugin EXCLUDE
)
install(DIRECTORY launch
DESTINATION share/${PROJECT_NAME}
)
install(TARGETS ${PROJECT_NAME}_lib
EXPORT export_${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
install(TARGETS micras_node
RUNTIME DESTINATION lib/${PROJECT_NAME}
)
install(TARGETS MicrasPlugin
DESTINATION share/${PROJECT_NAME}/micras_plugin
)
if(COMPILE_TESTS)
foreach(TEST_FILE ${PROJECT_TESTS})
get_filename_component(TEST_NAME ${TEST_FILE} NAME_WLE)
add_executable(${TEST_NAME}
${TEST_FILE}
)
ament_target_dependencies(${TEST_NAME} ${ROS_CODE_DEPS})
target_link_libraries(${TEST_NAME}
${PROJECT_NAME}_lib
)
install(TARGETS ${TEST_NAME}
RUNTIME DESTINATION lib/${PROJECT_NAME}
)
endforeach()
endif()
if(BUILD_TESTING)
set(ament_cmake_copyright_FOUND TRUE)
set(ament_cmake_cpplint_FOUND TRUE)
find_package(ament_lint_auto REQUIRED)
find_package(ament_cmake_gtest REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
ament_export_dependencies(${ROS_CODE_DEPS})
ament_package()