Skip to content

Commit b12c4b7

Browse files
authored
Add support for compiling Groot in ROS 2 workspaces. (#116)
Signed-off-by: Alexander Xydes <alexander.xydes@navy.mil>
1 parent 7a2779d commit b12c4b7

File tree

2 files changed

+54
-25
lines changed

2 files changed

+54
-25
lines changed

CMakeLists.txt

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
cmake_minimum_required(VERSION 3.2)
22

3+
# Update the policy setting to avoid an error when loading the ament_cmake package
4+
# at the current cmake version level
5+
if(POLICY CMP0057)
6+
cmake_policy(SET CMP0057 NEW)
7+
endif()
8+
39
project(groot)
410

511
find_package(Qt5 COMPONENTS Core Widgets Gui OpenGL Xml Svg)
@@ -13,14 +19,23 @@ else()
1319
endif()
1420

1521
#############################################################
22+
find_package(ament_cmake QUIET)
23+
if(ament_cmake_FOUND)
24+
find_package(behaviortree_cpp_v3 REQUIRED)
25+
26+
set(dependencies
27+
behaviortree_cpp_v3
28+
)
29+
30+
message(STATUS "------------------------------------------------")
31+
message(STATUS "BehaviourTreeEditor is being built using AMENT.")
32+
message(STATUS "------------------------------------------------")
33+
elseif( CATKIN_DEVEL_PREFIX OR CATKIN_BUILD_BINARY_PACKAGE)
1634
# http://answers.ros.org/question/230877/optionally-build-a-package-with-catkin/
17-
if( CATKIN_DEVEL_PREFIX OR CATKIN_BUILD_BINARY_PACKAGE)
18-
set(catkin_FOUND 1)
35+
set(catkin_FOUND 1)
1936
# add_definitions( -DUSING_ROS )
20-
endif()
2137

22-
if(catkin_FOUND)
23-
find_package(catkin REQUIRED COMPONENTS behaviortree_cpp_v3 rosbag rosbag_storage roscpp)
38+
find_package(catkin REQUIRED COMPONENTS behaviortree_cpp_v3)
2439

2540
message(STATUS "------------------------------------------------")
2641
message(STATUS "BehaviourTreeEditor is being built using CATKIN.")
@@ -32,7 +47,7 @@ if(catkin_FOUND)
3247
CATKIN_DEPENDS behaviortree_cpp_v3
3348
DEPENDS
3449
)
35-
endif(catkin_FOUND)
50+
endif()
3651
#############################################################
3752

3853
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -47,7 +62,11 @@ set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
4762
#set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
4863
#set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
4964

50-
INCLUDE_DIRECTORIES( ${catkin_INCLUDE_DIRS} ./QtNodeEditor/include ./ )
65+
if(ament_cmake_FOUND)
66+
INCLUDE_DIRECTORIES(include ./QtNodeEditor/include ./)
67+
else()
68+
INCLUDE_DIRECTORIES(${catkin_INCLUDE_DIRS} ./QtNodeEditor/include ./ )
69+
endif()
5170

5271
add_subdirectory( QtNodeEditor )
5372

@@ -60,7 +79,7 @@ set(BUILD_TOOLS OFF CACHE BOOL "")
6079
set(BUILD_TESTING OFF CACHE BOOL "")
6180
set(CATKIN_ENABLE_TESTING OFF CACHE BOOL "")
6281

63-
if(NOT catkin_FOUND)
82+
if(NOT catkin_FOUND AND NOT ament_cmake_FOUND)
6483
# look for BehaviorTree.CPP on the system
6584
find_package(BehaviorTree)
6685
if (NOT BehaviorTree_FOUND)
@@ -121,14 +140,16 @@ endif()
121140

122141
QT5_WRAP_UI(FORMS_HEADERS ${FORMS_UI})
123142

124-
add_library(behavior_tree_editor
143+
add_library(behavior_tree_editor SHARED
125144
${APP_CPPS}
126145
${FORMS_HEADERS}
127146
)
128147

129148
SET(GROOT_DEPENDENCIES QtNodeEditor )
130149

131-
if( catkin_FOUND )
150+
if(ament_cmake_FOUND)
151+
ament_target_dependencies(behavior_tree_editor ${dependencies})
152+
elseif( catkin_FOUND )
132153
SET(GROOT_DEPENDENCIES ${GROOT_DEPENDENCIES} ${catkin_LIBRARIES} )
133154
else()
134155
SET(GROOT_DEPENDENCIES ${GROOT_DEPENDENCIES} behaviortree_cpp_v3 )
@@ -148,7 +169,11 @@ add_subdirectory(test)
148169

149170
######################################################
150171
# INSTALL
151-
if(catkin_FOUND)
172+
if(ament_cmake_FOUND)
173+
set( GROOT_LIB_DESTINATION lib )
174+
set( GROOT_INC_DESTINATION include )
175+
set( GROOT_BIN_DESTINATION lib/${PROJECT_NAME} )
176+
elseif(catkin_FOUND)
152177
set( GROOT_LIB_DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} )
153178
set( GROOT_INC_DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} )
154179
set( GROOT_BIN_DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )
@@ -168,6 +193,9 @@ endif()
168193
INSTALL(TARGETS behavior_tree_editor LIBRARY DESTINATION ${GROOT_LIB_DESTINATION} )
169194
INSTALL(TARGETS Groot RUNTIME DESTINATION ${GROOT_BIN_DESTINATION} )
170195

171-
172-
173-
196+
if(ament_cmake_FOUND)
197+
ament_export_include_directories(include)
198+
ament_export_dependencies(${GROOT_DEPENDENCIES} ${dependencies})
199+
ament_export_libraries(behavior_tree_editor)
200+
ament_package()
201+
endif()

package.xml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0"?>
2-
<package>
2+
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
3+
<package format="3">
34
<name>groot</name>
45
<version>1.0.0</version>
56
<description>Graphical editor to create behaviour trees</description>
@@ -10,26 +11,26 @@
1011
<!-- One license tag required, multiple allowed, one license per tag -->
1112
<license>MIT</license>
1213

13-
<buildtool_depend>catkin</buildtool_depend>
14-
<build_depend>cmake_modules</build_depend>
14+
<buildtool_depend condition="$ROS_VERSION == 1">catkin</buildtool_depend>
15+
<build_depend condition="$ROS_VERSION == 1">cmake_modules</build_depend>
16+
<buildtool_depend condition="$ROS_VERSION == 2">ament_cmake</buildtool_depend>
1517

16-
<build_depend>pluginlib</build_depend>
17-
<build_depend>roscpp</build_depend>
1818
<build_depend>behaviortree_cpp_v3</build_depend>
1919
<build_depend>qtbase5-dev</build_depend>
20+
<build_depend>libqt5-core</build_depend>
21+
<build_depend>libqt5-gui</build_depend>
2022
<build_depend>libqt5-svg-dev</build_depend>
2123
<build_depend>libqt5-opengl-dev</build_depend>
24+
<build_depend>libqt5-widgets</build_depend>
25+
<build_depend>libqt5-xml</build_depend>
2226
<build_depend>qttools5-dev-tools</build_depend>
2327
<build_depend>libdw-dev</build_depend>
2428
<build_depend>libzmq3-dev</build_depend>
2529

26-
<run_depend>pluginlib</run_depend>
27-
<run_depend>roscpp</run_depend>
28-
<run_depend>behaviortree_cpp_v3</run_depend>
30+
<exec_depend>behaviortree_cpp_v3</exec_depend>
2931

30-
<!-- The export tag contains other, unspecified, tags -->
3132
<export>
32-
<!-- Other tools can request additional information be placed here -->
33-
33+
<build_type condition="$ROS_VERSION == 1">catkin</build_type>
34+
<build_type condition="$ROS_VERSION == 2">ament_cmake</build_type>
3435
</export>
3536
</package>

0 commit comments

Comments
 (0)