-
Notifications
You must be signed in to change notification settings - Fork 32
/
CMakeLists.txt
130 lines (109 loc) · 3.82 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
cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
# Set the build type. Options are:
# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage
# Debug : w/ debug symbols, w/o optimization
# Release : w/o debug symbols, w/ optimization
# RelWithDebInfo : w/ debug symbols, w/ optimization
# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries
set(ROS_BUILD_TYPE RelWithDebInfo)
########## CHOOSE PLATFORM #############
set(PLATFORM sensesoar)
#set(PLATFORM common)
#set(PLATFORM ardupilotmega)
#set(PLATFORM matrixpilot)
#set(PLATFORM minimal)
#set(PLATFORM pixhawk)
#set(PLATFORM sensesoar)
#set(PLATFORM slugs)
#set(PLATFORM test)
#set(PLATFORM ualberta)
rosbuild_init()
add_definitions("-DPLATFORM=${PLATFORM}")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include/v1.0/include")
include_directories("${CMAKE_SOURCE_DIR}/msg_gen/cpp/include")
include_directories("${CMAKE_SOURCE_DIR}/include/mavlink/v1.0/${PLATFORM}")
include_directories("${CMAKE_SOURCE_DIR}/include")
include_directories("${CMAKE_SOURCE_DIR}/include/mavlink/v1.0")
SET(
CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake
)
include(cmake/FindMAVLINK.cmake)
include(cmake/FindGLIB2.cmake)
include(cmake/FindGTHREAD2.cmake)
FIND_PACKAGE(MAVLINK REQUIRED)
FIND_PACKAGE(GLIB2 REQUIRED)
FIND_PACKAGE(GTHREAD2 REQUIRED)
INCLUDE_DIRECTORIES(
${MAVLINK_INCLUDE_DIR}
${GLIB2_MAIN_INCLUDE_DIR}
${GLIB2_INTERNAL_INCLUDE_DIR}
${GTHREAD2_MAIN_INCLUDE_DIR}
../include/
)
#messages generated with ros
rosbuild_genmsg()
# mavlink generation
macro(generateMavlink version definitions)
foreach(definition ${definitions})
set(targetName ${definition}-v${version})
set(definitionAbsPath ${CMAKE_SOURCE_DIR}/message_definitions/v${version}/${definition})
message(STATUS "processing: ${definitionAbsPath}")
add_custom_command(
OUTPUT ${targetName}-stamp
COMMAND ${PYTHON_EXECUTABLE} ${mavgen} --lang=ROS --wire-protocol=${version}
--output=include/v${version} ${definitionAbsPath}
COMMAND cp -rf ${CMAKE_CURRENT_BINARY_DIR}/include/v${version}/msg ${CMAKE_SOURCE_DIR}
COMMAND touch ${targetName}-stamp
DEPENDS ${definitionAbsPath} ${mavgen}
)
add_custom_target(${targetName} ALL DEPENDS ${targetName}-stamp)
add_dependencies(mavlink_ros_serial ${targetName})
endforeach()
endmacro()
#the main executable that passes the data from the serial port to ros
rosbuild_add_executable(mavlink_ros_serial src/mavlink_ros_serial.cpp)
target_link_libraries(mavlink_ros_serial
${GLIB2_LIBRARY}
${GTHREAD2_LIBRARY}
)
# build
set(mavgen ${CMAKE_SOURCE_DIR}/pymavlink/generator/mavgen.py)
set(v0.9Definitions
ardupilotmega.xml
common.xml
minimal.xml
pixhawk.xml
slugs.xml
test.xml
ualberta.xml
)
#generateMavlink("0.9" "${v0.9Definitions}")
set(v1.0Definitions
ardupilotmega.xml
common.xml
matrixpilot.xml
minimal.xml
pixhawk.xml
slugs.xml
test.xml
ualberta.xml
sensesoar.xml
)
generateMavlink("1.0" "${v1.0Definitions}")
#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# On mac use clang++
IF(${CMAKE_SYSTEM} MATCHES "Darwin-11.*")
# Use clang++
set(CMAKE_CXX_COMPILER /usr/bin/clang++)
# Use clang
set(CMAKE_C_COMPILER /usr/bin/clang)
ENDIF(${CMAKE_SYSTEM} MATCHES "Darwin-11.*")
#common commands for building c++ executables and libraries
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp)
#target_link_libraries(${PROJECT_NAME} another_library)
#rosbuild_add_boost_directories()
#rosbuild_link_boost(${PROJECT_NAME} thread)