Skip to content

Commit 15b43db

Browse files
Cmake fix. Address some of the concerns of #9 and #10 (#11)
* fix travis * better installation with renamed directories
1 parent 3f04827 commit 15b43db

File tree

106 files changed

+291
-237
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+291
-237
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ before_script:
3939
- mkdir -p build
4040

4141
script:
42-
- if [ "$ROS_DISTRO" = "none" ]; then (cd build; cmake .. ;cmake --build .; ./bin/behavior_tree_core_test); fi
42+
- if [ "$ROS_DISTRO" = "none" ]; then (cd build; cmake .. ;cmake --build .; ./bin/behaviortree_cpp_test); fi
4343
- if [ "$ROS_DISTRO" != "none" ]; then (.ci_config/travis.sh); fi
4444

4545

3rdparty/minitrace/minitrace.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,15 @@ int64_t mtr_time_usec()
126126
{
127127
static int64_t prev = 0;
128128
struct timeval tv;
129-
gettimeofday(&tv, NULL);
129+
gettimeofday(&tv, nullptr);
130130
int64_t now = 1000000*tv.tv_sec + tv.tv_usec;
131131
if( now <= prev) now = prev + 1;
132132
prev = now;
133133
return now;
134134
}
135135
#endif // !BLACKBERRY
136136

137-
static void termination_handler(int signum) {
137+
static void termination_handler(int ) {
138138
if (is_tracing) {
139139
printf("Ctrl-C detected! Flushing trace and shutting down.\n\n");
140140
mtr_flush();

3rdparty/tinyXML2/tinyxml2.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ distribution.
6565
#endif
6666

6767
// Do NOT export. This version is meant to be linked statically only.
68-
#define TINYXML2_LIB
69-
70-
71-
68+
#ifdef _WIN32
69+
# define TINYXML2_LIB // TODO?
70+
#else
71+
# define TINYXML2_LIB __attribute__((visibility("hidden")))
72+
#endif
7273

7374
#if defined(TINYXML2_DEBUG)
7475
# if defined(_MSC_VER)

CMakeLists.txt

+138-99
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,44 @@
1-
cmake_minimum_required(VERSION 2.8)
2-
project(behavior_tree_core)
1+
cmake_minimum_required(VERSION 2.8.12) # version on Ubuntu Trusty
2+
project(behaviortree_cpp)
3+
4+
if(NOT CMAKE_VERSION VERSION_LESS 3.1)
5+
set(CMAKE_CXX_STANDARD 11)
6+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7+
else()
8+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
9+
endif()
10+
11+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
312

4-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Werror=return-type -Wall -Wpedantic -Wattributes")
5-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake")
13+
14+
set(CMAKE_CONFIG_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake")
15+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CONFIG_PATH}")
616

717
option(BUILD_EXAMPLES "Build tutorials and examples" ON)
818
option(BUILD_UNIT_TESTS "Build the unit tests" ON)
919

1020
#############################################################
11-
# http://answers.ros.org/question/230877/optionally-build-a-package-with-catkin/
12-
#
13-
# This variable MUST NOT be set manually by the user, it will be detected
14-
# automatically if you compile using catkin
21+
# Find packages
22+
find_package(Threads REQUIRED)
23+
find_package(ZMQ)
24+
find_package(GTest)
25+
26+
list(APPEND BEHAVIOR_TREE_EXTERNAL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
27+
28+
if( ZMQ_FOUND )
29+
message(STATUS "ZeroMQ found.")
30+
add_definitions( -DZMQ_FOUND )
31+
list(APPEND BT_SOURCE src/loggers/bt_zmq_publisher.cpp)
32+
list(APPEND BEHAVIOR_TREE_EXTERNAL_LIBRARIES zmq)
33+
else()
34+
message(WARNING "ZeroMQ NOT found. Skipping the build of [PublisherZMQ] and [bt_recorder].")
35+
endif()
36+
37+
if(NOT GTEST_FOUND)
38+
message(WARNING " GTest not found!")
39+
endif(NOT GTEST_FOUND)
40+
41+
1542
if( CATKIN_DEVEL_PREFIX OR CATKIN_BUILD_BINARY_PACKAGE)
1643
set(catkin_FOUND 1)
1744
add_definitions( -DUSING_ROS )
@@ -26,119 +53,131 @@ if(catkin_FOUND)
2653

2754
catkin_package(
2855
INCLUDE_DIRS include # do not include "3rdparty" here
29-
LIBRARIES behavior_tree_core
56+
LIBRARIES ${PROJECT_NAME}
3057
)
3158

32-
else(catkin_FOUND)
59+
else()
3360

3461
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
3562
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
3663
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
3764

38-
find_package(GTest)
39-
include_directories(${GTEST_INCLUDE_DIRS})
40-
if(NOT GTEST_FOUND)
41-
message(WARNING " GTest not found!")
42-
endif(NOT GTEST_FOUND)
43-
44-
endif(catkin_FOUND)
45-
46-
47-
set(BT_Source
48-
src/action_node.cpp
49-
src/basic_types.cpp
50-
src/decorator_node.cpp
51-
src/condition_node.cpp
52-
src/control_node.cpp
53-
src/exceptions.cpp
54-
src/leaf_node.cpp
55-
src/tick_engine.cpp
56-
src/tree_node.cpp
57-
src/bt_factory.cpp
58-
src/behavior_tree.cpp
59-
src/xml_parsing.cpp
60-
src/shared_library.cpp
61-
src/shared_library_UNIX.cpp
62-
63-
src/decorators/inverter_node.cpp
64-
src/decorators/repeat_node.cpp
65-
src/decorators/retry_node.cpp
66-
src/decorators/timeout_node.cpp
67-
68-
src/controls/parallel_node.cpp
69-
src/controls/sequence_node.cpp
70-
src/controls/sequence_star_node.cpp
71-
src/controls/fallback_node.cpp
72-
src/controls/fallback_star_node.cpp
73-
74-
src/loggers/bt_cout_logger.cpp
75-
src/loggers/bt_file_logger.cpp
76-
src/loggers/bt_minitrace_logger.cpp
77-
78-
3rdparty/tinyXML2/tinyxml2.cpp
79-
3rdparty/minitrace/minitrace.cpp
80-
)
81-
include_directories(include 3rdparty/)
82-
83-
set(BEHAVIOR_TREE_LIBRARIES behavior_tree_core)
65+
endif()
8466

85-
find_package(ZMQ)
67+
#############################################################
68+
# LIBRARY
8669

87-
if( ZMQ_FOUND )
88-
message(STATUS "ZeroMQ found.")
89-
add_definitions( -DZMQ_FOUND )
90-
set(BT_Source ${BT_Source} src/loggers/bt_zmq_publisher.cpp )
70+
list(APPEND BT_SOURCE
71+
src/action_node.cpp
72+
src/basic_types.cpp
73+
src/decorator_node.cpp
74+
src/condition_node.cpp
75+
src/control_node.cpp
76+
src/exceptions.cpp
77+
src/leaf_node.cpp
78+
src/tick_engine.cpp
79+
src/tree_node.cpp
80+
src/bt_factory.cpp
81+
src/behavior_tree.cpp
82+
src/xml_parsing.cpp
83+
src/shared_library.cpp
84+
src/shared_library_UNIX.cpp
85+
86+
src/decorators/inverter_node.cpp
87+
src/decorators/repeat_node.cpp
88+
src/decorators/retry_node.cpp
89+
src/decorators/timeout_node.cpp
90+
91+
src/controls/parallel_node.cpp
92+
src/controls/sequence_node.cpp
93+
src/controls/sequence_star_node.cpp
94+
src/controls/fallback_node.cpp
95+
src/controls/fallback_star_node.cpp
96+
97+
src/loggers/bt_cout_logger.cpp
98+
src/loggers/bt_file_logger.cpp
99+
src/loggers/bt_minitrace_logger.cpp
100+
101+
3rdparty/tinyXML2/tinyxml2.cpp
102+
3rdparty/minitrace/minitrace.cpp
103+
)
104+
105+
set(BEHAVIOR_TREE_LIBRARY ${PROJECT_NAME})
91106

92-
set(BEHAVIOR_TREE_LIBRARIES ${BEHAVIOR_TREE_LIBRARIES} zmq)
107+
add_library(${BEHAVIOR_TREE_LIBRARY} ${BT_SOURCE} )
108+
target_link_libraries(${BEHAVIOR_TREE_LIBRARY} ${BEHAVIOR_TREE_EXTERNAL_LIBRARIES} ${catkin_LIBRARIES})
109+
target_include_directories(${BEHAVIOR_TREE_LIBRARY} PUBLIC include 3rdparty ${catkin_INCLUDE_DIRS})
110+
111+
if(MSVC)
112+
target_compile_options(${BEHAVIOR_TREE_LIBRARY} PRIVATE /W4 /WX)
93113
else()
94-
message(WARNING "ZeroMQ NOT found. Skipping the build of [PublisherZMQ] and [bt_recorder].")
114+
target_compile_options(${BEHAVIOR_TREE_LIBRARY} PRIVATE -Wall -Wextra -Werror=return-type)
95115
endif()
96116

97117
######################################################
98-
# LIBRARY
118+
# TESTS
119+
120+
list(APPEND BT_TESTS
121+
gtest/src/action_test_node.cpp
122+
gtest/src/condition_test_node.cpp
123+
gtest/gtest_tree.cpp
124+
gtest/gtest_sequence.cpp
125+
gtest/gtest_parallel.cpp
126+
gtest/gtest_fallback.cpp
127+
gtest/gtest_factory.cpp
128+
gtest/gtest_decorator.cpp
129+
)
130+
131+
if(catkin_FOUND AND CATKIN_ENABLE_TESTING)
132+
133+
catkin_add_gtest(${BEHAVIOR_TREE_LIBRARY}_test ${BT_TESTS})
134+
target_link_libraries(${BEHAVIOR_TREE_LIBRARY}_test ${BEHAVIOR_TREE_LIBRARY}
135+
crossdoor_nodes
136+
${catkin_LIBRARIES})
137+
target_include_directories(${BEHAVIOR_TREE_LIBRARY}_test PRIVATE gtest/include)
138+
139+
elseif(GTEST_FOUND AND BUILD_UNIT_TESTS)
140+
141+
enable_testing()
142+
143+
add_executable(${BEHAVIOR_TREE_LIBRARY}_test ${BT_TESTS})
144+
target_link_libraries(${PROJECT_NAME}_test ${BEHAVIOR_TREE_LIBRARY}
145+
crossdoor_nodes
146+
${GTEST_LIBRARIES}
147+
${GTEST_MAIN_LIBRARIES})
148+
target_include_directories(${BEHAVIOR_TREE_LIBRARY}_test PRIVATE gtest/include ${GTEST_INCLUDE_DIRS})
149+
150+
add_test(BehaviorTreeCoreTest ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BEHAVIOR_TREE_LIBRARY}_test)
151+
endif()
152+
99153
######################################################
100-
add_library(behavior_tree_core STATIC ${BT_Source} )
101-
target_compile_options(behavior_tree_core PRIVATE "-fPIC")
102-
target_link_libraries(behavior_tree_core dl)
154+
# INSTALL
155+
if(catkin_FOUND)
156+
set( BEHAVIOR_TREE_LIB_DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} )
157+
set( BEHAVIOR_TREE_INC_DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION} )
158+
set( BEHAVIOR_TREE_BIN_DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )
159+
else()
160+
set( BEHAVIOR_TREE_LIB_DESTINATION lib )
161+
set( BEHAVIOR_TREE_INC_DESTINATION include )
162+
set( BEHAVIOR_TREE_BIN_DESTINATION bin )
163+
endif()
164+
165+
INSTALL(TARGETS ${BEHAVIOR_TREE_LIBRARY}
166+
ARCHIVE DESTINATION ${BEHAVIOR_TREE_LIB_DESTINATION}
167+
LIBRARY DESTINATION ${BEHAVIOR_TREE_LIB_DESTINATION}
168+
)
169+
170+
INSTALL( DIRECTORY ${CMAKE_SOURCE_DIR}/include/
171+
DESTINATION ${BEHAVIOR_TREE_INC_DESTINATION}
172+
FILES_MATCHING PATTERN "*.h*")
103173

104174
######################################################
105175
# EXAMPLES and TOOLS
106-
######################################################
176+
107177
if( BUILD_EXAMPLES )
108178
add_subdirectory(tools)
109179
add_subdirectory(sample_nodes)
110180
add_subdirectory(examples)
111181
endif()
112-
######################################################
113-
# TESTS
114-
######################################################
115-
set(BT_Tests
116-
gtest/src/action_test_node.cpp
117-
gtest/src/condition_test_node.cpp
118-
gtest/gtest_tree.cpp
119-
gtest/gtest_sequence.cpp
120-
gtest/gtest_parallel.cpp
121-
gtest/gtest_fallback.cpp
122-
gtest/gtest_factory.cpp
123-
gtest/gtest_decorator.cpp
124-
)
125-
126-
if(catkin_FOUND AND CATKIN_ENABLE_TESTING)
127-
include_directories(gtest/include)
128182

129-
catkin_add_gtest(behavior_tree_core_test ${BT_Tests} )
130-
target_link_libraries(behavior_tree_core_test
131-
${BEHAVIOR_TREE_LIBRARIES} crossdoor_nodes
132-
${catkin_LIBRARIES} )
133183

134-
elseif(GTEST_FOUND AND BUILD_UNIT_TESTS)
135-
include_directories(gtest/include)
136-
137-
add_executable(behavior_tree_core_test ${BT_Tests} )
138-
target_link_libraries(behavior_tree_core_test
139-
${BEHAVIOR_TREE_LIBRARIES} crossdoor_nodes
140-
${GTEST_LIBRARIES}
141-
${GTEST_MAIN_LIBRARIES}
142-
)
143-
144-
endif()

docs/tutorial_A_create_trees.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ The attribute "name" represents the name of the instance and it is optional.
187187

188188

189189
``` c++
190-
#include "behavior_tree_core/xml_parsing.h"
190+
#include "behaviortree_cpp/xml_parsing.h"
191191
#include "Blackboard/blackboard_local.h"
192192
#include "dummy_nodes.h"
193193

docs/tutorial_E_plugins.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ The [first tutorial](tutorial_A_create_trees.md) becomes, as a result, much simp
5353

5454

5555
```c++ hl_lines="3 25"
56-
#include "behavior_tree_core/xml_parsing.h"
56+
#include "behaviortree_cpp/xml_parsing.h"
5757
#include "Blackboard/blackboard_local.h"
5858
// #include "dummy_nodes.h" YOU DON'T NEED THIS ANYMORE
5959

docs/tutorial_F_loggers.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ We can attach multiple loggers to a tree.
1010
To do this, we pass the root of the tree.
1111

1212
```c++ hl_lines="21 22 23 25"
13-
#include "behavior_tree_core/xml_parsing.h"
14-
#include "behavior_tree_logger/bt_cout_logger.h"
15-
#include "behavior_tree_logger/bt_minitrace_logger.h"
16-
#include "behavior_tree_logger/bt_file_logger.h"
13+
#include "behaviortree_cpp/xml_parsing.h"
14+
#include "behaviortree_cpp/loggers/bt_cout_logger.h"
15+
#include "behaviortree_cpp/loggers/bt_minitrace_logger.h"
16+
#include "behaviortree_cpp/loggers/bt_file_logger.h"
1717

1818
#ifdef ZMQ_FOUND
19-
#include "behavior_tree_logger/bt_zmq_publisher.h"
19+
#include "behaviortree_cpp/loggers/bt_zmq_publisher.h"
2020
#endif
2121

2222
using namespace BT;

examples/CMakeLists.txt

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
11
cmake_minimum_required(VERSION 2.8)
22

33

4-
include_directories( ../include ../sample_nodes )
5-
64
# This tutorial demonstrates how to compile statically a tree (no factory)
75
add_executable(t01_programmatic_tree t01_programmatic_tree.cpp )
8-
target_link_libraries(t01_programmatic_tree dummy_nodes ${BEHAVIOR_TREE_LIBRARIES} )
6+
target_link_libraries(t01_programmatic_tree dummy_nodes ${BEHAVIOR_TREE_LIBRARY} )
97

108
# The plugin libdummy_nodes.so can be linked statically or
119
# loaded dynamically at run-time.
1210
add_executable(t02_factory_static t02_factory_tree.cpp )
1311
target_compile_definitions(t02_factory_static PRIVATE "MANUAL_STATIC_LINKING")
14-
target_link_libraries(t02_factory_static ${BEHAVIOR_TREE_LIBRARIES} dummy_nodes )
12+
target_link_libraries(t02_factory_static ${BEHAVIOR_TREE_LIBRARY} dummy_nodes )
1513

1614
add_executable(t02_factory_dynamic t02_factory_tree.cpp )
17-
target_link_libraries(t02_factory_dynamic ${BEHAVIOR_TREE_LIBRARIES} )
15+
target_link_libraries(t02_factory_dynamic ${BEHAVIOR_TREE_LIBRARY} )
1816

1917

2018
# This tutorial shows how the difference between Sequence and SequenceStar
2119
add_executable(t03_sequence_star t03_sequence_star.cpp )
22-
target_link_libraries(t03_sequence_star movebase_node dummy_nodes ${BEHAVIOR_TREE_LIBRARIES} )
20+
target_link_libraries(t03_sequence_star movebase_node dummy_nodes ${BEHAVIOR_TREE_LIBRARY} )
2321

2422
# This tutorial demonstrates how to use blackboards and NodeParameters
2523
add_executable(t04_blackboard t04_blackboard.cpp )
26-
target_link_libraries(t04_blackboard movebase_node ${BEHAVIOR_TREE_LIBRARIES} )
24+
target_link_libraries(t04_blackboard movebase_node ${BEHAVIOR_TREE_LIBRARY} )
2725

2826
add_executable(t05_crossdoor t05_crossdoor.cpp )
29-
target_link_libraries(t05_crossdoor crossdoor_nodes ${BEHAVIOR_TREE_LIBRARIES} )
27+
target_link_libraries(t05_crossdoor crossdoor_nodes ${BEHAVIOR_TREE_LIBRARY} )

0 commit comments

Comments
 (0)