-
Notifications
You must be signed in to change notification settings - Fork 141
/
CMakeLists.txt
152 lines (129 loc) · 4.07 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
cmake_minimum_required(VERSION 3.5)
project(zed_wrapper)
## Generate symbols for IDE indexer
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
################################################
# Check the ROS2 version
set(ROS2_FOUND FALSE)
if(DEFINED ENV{ROS_DISTRO})
set(FOUND_ROS2_DISTRO $ENV{ROS_DISTRO})
set(ROS2_FOUND TRUE)
#message("* Found ROS2 ${FOUND_ROS2_DISTRO}")
else()
message("* ROS2 distro variable not set. Trying to figure it out...")
set(ROS2_DISTROS "ardent;crystal;dashing;eloquent;foxy;galactic;humble;rolling")
set(ROS2_FOUND FALSE)
foreach(distro ${ROS2_DISTROS})
if(NOT ROS2_FOUND)
find_path(RCLCPP_H rclcpp.hpp PATHS /opt/ros/${distro}/include/rclcpp)
if(RCLCPP_H)
#message("* Found ROS2 ${distro}")
set(FOUND_ROS2_DISTRO ${distro})
set(ROS2_FOUND TRUE)
endif()
endif()
endforeach()
endif()
if(ROS2_FOUND)
if(${FOUND_ROS2_DISTRO} STREQUAL "foxy")
#message("* ROS2 ${FOUND_ROS2_DISTRO} is officially supported by this package.")
add_definitions(-DFOUND_FOXY)
elseif(${FOUND_ROS2_DISTRO} STREQUAL "iron")
#message("* ROS2 ${FOUND_ROS2_DISTRO} is officially supported by this package.")
add_definitions(-DFOUND_IRON)
elseif(${FOUND_ROS2_DISTRO} STREQUAL "humble")
#message("* ROS2 ${FOUND_ROS2_DISTRO} is officially supported by this package.")
add_definitions(-DFOUND_HUMBLE)
else()
message("*** WARNING *** ROS2 ${FOUND_ROS2_DISTRO} is not officially supported by the package '${PROJECT_NAME}'. Correct operation is not guaranteed.")
endif()
else()
message("*** WARNING *** ROS2 distro is unknown. This package could not work correctly.")
endif()
################################################
# Default to C99
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
# if CMAKE_BUILD_TYPE is not specified, take 'Release' as default
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if(CMAKE_BUILD_TYPE MATCHES Release)
#message(" * Release Mode")
add_compile_options(-Wno-deprecated-declarations)
endif()
if(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
#message(" * Release with Debug Info Mode")
add_compile_options(-Wall -Wextra -Wpedantic)
add_compile_options(-Wno-deprecated-declarations)
endif()
if(CMAKE_BUILD_TYPE MATCHES Debug)
message(" * Debug Mode")
endif()
#############################################
# Dependencies
find_package(ZED 4 REQUIRED)
find_package(CUDA REQUIRED)
find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()
find_package(rclcpp REQUIRED)
find_package(rclcpp_components REQUIRED)
find_package(rcutils REQUIRED)
find_package(zed_components REQUIRED)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()
###############################################################################
#Add all files in subdirectories of the project in
# a dummy_target so qtcreator have access to all files
file(GLOB_RECURSE all_files ${CMAKE_SOURCE_DIR}/*)
add_custom_target(all_${PROJECT_NAME}_files SOURCES ${all_files})
###############################################################################
# INCLUDES and LIBS
include_directories(
${CUDA_INCLUDE_DIRS}
${ZED_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src
)
###############################################################################
# SOURCES
set(ZED_WRAPPER_SRC
${CMAKE_CURRENT_SOURCE_DIR}/src/zed_wrapper.cpp
)
###############################################################################
# Bin and Install
add_executable(zed_wrapper
${ZED_WRAPPER_SRC}
)
ament_target_dependencies(zed_wrapper
rclcpp
rclcpp_components
zed_components
)
install(TARGETS zed_wrapper
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION lib/${PROJECT_NAME}
)
# Install PARAMS files
install(DIRECTORY
config
DESTINATION share/${PROJECT_NAME}
)
# Install URDF files
install(DIRECTORY
urdf
DESTINATION share/${PROJECT_NAME}
)
# Install LAUNCH files
install(DIRECTORY
launch
DESTINATION share/${PROJECT_NAME}
)
ament_package()