@@ -14,25 +14,47 @@ find_package(pybind11_vendor REQUIRED)
1414find_package (pybind11 REQUIRED)
1515find_package (fmt REQUIRED)
1616find_package (py_binding_tools REQUIRED)
17+ find_package (rclcpp REQUIRED)
1718
18- ament_python_install_package(behaviortree_py PACKAGE_DIR behaviortree_py)
19-
20- add_library ( ${PROJECT_NAME} _headers INTERFACE )
19+ # ##############################################################################
20+ # ############################# Main C++ library ###############################
21+ # ##############################################################################
2122
22- target_link_libraries (${PROJECT_NAME} _headers
23- INTERFACE behaviortree_cpp::behaviortree_cpp fmt::fmt)
23+ add_library (${PROJECT_NAME} _lib SHARED src/behaviortree_py.cpp)
24+ target_link_libraries (
25+ ${PROJECT_NAME} _lib PUBLIC behaviortree_cpp::behaviortree_cpp fmt::fmt
26+ rclcpp::rclcpp)
27+ ament_target_dependencies(${PROJECT_NAME} _lib pybind11)
2428target_include_directories (
25- ${PROJECT_NAME} _headers
26- INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
27- "$<INSTALL_INTERFACE:include>" )
29+ ${PROJECT_NAME} _lib
30+ PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
31+ "$<INSTALL_INTERFACE:include>" )
32+ install (DIRECTORY include / DESTINATION include /)
33+ install (
34+ TARGETS ${PROJECT_NAME} _lib
35+ EXPORT ${PROJECT_NAME} Targets
36+ ARCHIVE DESTINATION lib
37+ LIBRARY DESTINATION lib
38+ RUNTIME DESTINATION lib
39+ INCLUDES
40+ DESTINATION include )
41+
42+ # ##############################################################################
43+ # ############################# Python bindings ################################
44+ # ##############################################################################
2845
29- pybind11_add_module(behaviortree_py src/behaviortree_py.cpp)
46+ ament_python_install_package(behaviortree_py PACKAGE_DIR behaviortree_py)
47+
48+ pybind11_add_module(behaviortree_py src/bindings/behaviortree_py.cpp)
3049target_compile_features (behaviortree_py PRIVATE cxx_std_20)
31- target_link_libraries (
32- behaviortree_py
33- PRIVATE behaviortree_cpp::behaviortree_cpp fmt::fmt ${PROJECT_NAME} _headers
34- py_binding_tools::py_binding_tools)
50+ target_link_libraries (behaviortree_py PRIVATE ${PROJECT_NAME} _lib)
3551
52+ install (TARGETS behaviortree_py
53+ LIBRARY DESTINATION ${PYTHON_INSTALL_DIR} /behaviortree_py)
54+
55+ # ##############################################################################
56+ # ################## Generate and install Python stubs #########################
57+ # ##############################################################################
3658add_custom_command (
3759 TARGET behaviortree_py
3860 POST_BUILD
@@ -41,23 +63,13 @@ add_custom_command(
4163 WORKING_DIRECTORY $<TARGET_FILE_DIR:behaviortree_py>
4264 USES_TERMINAL )
4365
44- install (DIRECTORY include / DESTINATION include /)
45- install (TARGETS behaviortree_py
46- LIBRARY DESTINATION ${PYTHON_INSTALL_DIR} /behaviortree_py)
47-
48- install (
49- TARGETS ${PROJECT_NAME} _headers
50- EXPORT ${PROJECT_NAME} Targets
51- ARCHIVE DESTINATION lib
52- LIBRARY DESTINATION lib
53- RUNTIME DESTINATION lib
54- INCLUDES
55- DESTINATION include )
5666install (
5767 FILES
5868 $<TARGET_FILE_DIR:behaviortree_py>/$<TARGET_FILE_BASE_NAME:behaviortree_py>.pyi
5969 COMPONENT python
6070 DESTINATION ${PYTHON_INSTALL_DIR} /$<TARGET_FILE_BASE_NAME:behaviortree_py>)
6171
62- ament_export_targets(${PROJECT_NAME} Targets)
72+ ament_export_targets(${PROJECT_NAME} Targets HAS_LIBRARY_TARGET)
73+ ament_export_dependencies(behaviortree_cpp pybind11_vendor fmt py_binding_tools
74+ rclcpp)
6375ament_package()
0 commit comments