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 )
3
12
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} " )
6
16
7
17
option (BUILD_EXAMPLES "Build tutorials and examples" ON )
8
18
option (BUILD_UNIT_TESTS "Build the unit tests" ON )
9
19
10
20
#############################################################
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
+
15
42
if ( CATKIN_DEVEL_PREFIX OR CATKIN_BUILD_BINARY_PACKAGE)
16
43
set (catkin_FOUND 1)
17
44
add_definitions ( -DUSING_ROS )
@@ -26,119 +53,131 @@ if(catkin_FOUND)
26
53
27
54
catkin_package(
28
55
INCLUDE_DIRS include # do not include "3rdparty" here
29
- LIBRARIES behavior_tree_core
56
+ LIBRARIES ${PROJECT_NAME}
30
57
)
31
58
32
- else (catkin_FOUND )
59
+ else ()
33
60
34
61
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
35
62
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
36
63
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
37
64
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 ()
84
66
85
- find_package (ZMQ)
67
+ #############################################################
68
+ # LIBRARY
86
69
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} )
91
106
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)
93
113
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 )
95
115
endif ()
96
116
97
117
######################################################
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
+
99
153
######################################################
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*" )
103
173
104
174
######################################################
105
175
# EXAMPLES and TOOLS
106
- ######################################################
176
+
107
177
if ( BUILD_EXAMPLES )
108
178
add_subdirectory (tools)
109
179
add_subdirectory (sample_nodes)
110
180
add_subdirectory (examples)
111
181
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 )
128
182
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} )
133
183
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 ()
0 commit comments