-
Notifications
You must be signed in to change notification settings - Fork 124
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
153 lines (131 loc) · 4.25 KB
/
CMakeLists.txt
File metadata and controls
153 lines (131 loc) · 4.25 KB
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
cmake_minimum_required(VERSION 2.8.3)
project(bebop_driver)
add_definitions(-std=c++11 -D__STDC_CONSTANT_MACROS)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
bebop_msgs
nodelet
camera_info_manager
image_transport
nav_msgs
roscpp
std_msgs
tf
dynamic_reconfigure
roslint
)
generate_dynamic_reconfigure_options(
cfg/autogenerated/bebop_ardrone3.cfg
)
# Video decoding dependencies (libbebop)
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC REQUIRED libavcodec)
pkg_check_modules(AVFORMAT REQUIRED libavformat)
pkg_check_modules(SWSCALE REQUIRED libswscale)
# TODO: Should we state all catkin depends?
catkin_package(
INCLUDE_DIRS include
LIBRARIES libbebop bebop_driver_nodelet
CATKIN_DEPENDS bebop_msgs roscpp nodelet camera_info_manager image_transport nav_msgs std_msgs tf dynamic_reconfigure
DEPENDS system_lib libavcodec libavformat libswscale
)
# roslint
set(ROSLINT_CPP_OPTS "--filter=-build/include")
roslint_cpp(
src/bebop.cpp
src/bebop_driver_node.cpp
src/bebop_driver_nodelet.cpp
src/bebop_video_decoder.cpp
include/bebop_driver/bebop.h
include/bebop_driver/bebop_driver_nodelet.h
include/bebop_driver/bebop_video_decoder.h
)
###########
## Build ##
###########
# Build ARDroneSDK3 through their custom build manager (ARSDKBuildUtils)
# TODO: Replace ExternalProject with a catkin package wrapper or a cmake macro.
# the build time is unnecessarily long due to many git checkout ./SDK3Build.py performs.
#include(ExternalProject)
#ExternalProject_Add(ARSDKBuildUtils
# GIT_REPOSITORY https://github.com/ARDroneSDK3/ARSDKBuildUtils.git
# GIT_TAG ARSDK3_version_3_6
# PREFIX ${CATKIN_DEVEL_PREFIX}
# CONFIGURE_COMMAND echo "No configure"
# BUILD_COMMAND ./SDK3Build.py -t Unix
# INSTALL_COMMAND echo "No install"
# BUILD_IN_SOURCE 1
#)
set(ARDRONESDK3_PATH "/home/edison/bebop_sdk_ws/ARSDKBuildUtils/Targets/Unix/Install")
#set(ARDRONESDK3_PATH "${CATKIN_DEVEL_PREFIX}/src/ARSDKBuildUtils/Targets/Unix/Install")
include_directories(
${catkin_INCLUDE_DIRS}
include
${ARDRONESDK3_PATH}/include
${AVCODEC_INCLUDE_DIRS}
${AVFORMAT_INCLUDE_DIRS}
${SWSCALE_INCLUDE_DIRS}
)
link_directories(${ARDRONESDK3_PATH}/lib)
add_library(libbebop src/bebop.cpp src/bebop_video_decoder.cpp)
target_link_libraries(libbebop
${catkin_LIBRARIES}
arsal
arcontroller
ardiscovery
${AVCODEC_LIBRARIES}
${AVFORMAT_LIBRARIES}
${SWSCALE_LIBRARIES}
)
add_dependencies(libbebop ARSDKBuildUtils)
add_library(bebop_driver_nodelet src/bebop_driver_nodelet.cpp)
target_link_libraries(bebop_driver_nodelet
${catkin_LIBRARIES}
libbebop
)
add_dependencies(bebop_driver_nodelet ${PROJECT_NAME}_gencfg)
add_executable(bebop_driver_node src/bebop_driver_node.cpp)
target_link_libraries(bebop_driver_node
${catkin_LIBRARIES}
libbebop
)
add_dependencies(bebop_driver_node ${PROJECT_NAME}_gencfg)
#############
## Install ##
#############
# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# install(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
## Mark executables and/or libraries for installation
# install(TARGETS bebop_autonomy bebop_autonomy_node
# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
# FILES_MATCHING PATTERN "*.h"
# PATTERN ".svn" EXCLUDE
# )
## Mark other files for installation (e.g. launch and bag files, etc.)
# install(FILES
# # myfile1
# # myfile2
# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )
#############
## Testing ##
#############
if(CATKIN_ENABLE_TESTING)
find_package(rostest REQUIRED)
add_rostest_gtest(bebop_itl_test test/bebop_itl_test.test test/bebop_itl_test.cpp)
target_link_libraries(bebop_itl_test ${catkin_LIBRARIES})
endif()