1- cmake_minimum_required (VERSION 3.8 )
1+ cmake_minimum_required (VERSION 3.20 )
22project (sas_robot_driver)
33
4+ # Default to C++20
5+ if (NOT CMAKE_CXX_STANDARD )
6+ set (CMAKE_CXX_STANDARD 20)
7+ endif ()
8+
49if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
510 add_compile_options (-Wall -Wextra -Wpedantic )
611endif ()
@@ -15,41 +20,52 @@ add_subdirectory(pybind11)
1520###############################
1621
1722find_package (ament_cmake REQUIRED )
23+ find_package (ament_cmake_python REQUIRED )
24+ find_package (Eigen3 REQUIRED )
1825find_package (rclcpp REQUIRED )
1926find_package (geometry_msgs REQUIRED )
2027find_package (std_msgs REQUIRED )
2128find_package (sensor_msgs REQUIRED )
2229find_package (sas_common REQUIRED )
2330find_package (sas_core REQUIRED )
2431find_package (sas_conversions REQUIRED )
25- find_package (Eigen3 REQUIRED )
2632
27- ##### CPP LIBRARY #####
33+ ####################################
34+ # CPP Shared Library Block [BEGIN] #
35+ # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv #
36+ # https://ros2-tutorial.readthedocs.io/en/latest/
37+ # The most common use case is to merge everything you need to export
38+ # into the same shared library called ${PROJECT_NAME}.
2839
2940add_library (${PROJECT_NAME } SHARED
3041 src/sas_robot_driver_server.cpp
3142 src/sas_robot_driver_client.cpp
3243 src/sas_robot_driver_ros.cpp
3344 )
3445
35- ament_target_dependencies (${PROJECT_NAME } rclcpp geometry_msgs std_msgs sensor_msgs sas_common sas_core sas_conversions )
36-
3746target_include_directories (${PROJECT_NAME }
3847 PUBLIC
3948 $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
4049 $<INSTALL_INTERFACE :include >)
4150
4251ament_export_targets (export_${PROJECT_NAME} HAS_LIBRARY_TARGET )
43- ament_export_dependencies (Eigen3 rclcpp geometry_msgs std_msgs sensor_msgs sas_common sas_core sas_conversions )
4452
4553install (
4654 DIRECTORY include/
4755 DESTINATION include
4856 )
4957
5058target_link_libraries (${PROJECT_NAME }
59+ PUBLIC
5160 -ldqrobotics
5261 Eigen3::Eigen
62+ rclcpp::rclcpp
63+ geometry_msgs::geometry_msgs
64+ std_msgs::std_msgs
65+ sensor_msgs::sensor_msgs
66+ sas_common::sas_common
67+ sas_core::sas_core
68+ sas_conversions::sas_conversions
5369 )
5470
5571install (
@@ -61,23 +77,27 @@ install(
6177 INCLUDES DESTINATION include
6278 )
6379
64- ##END## CPP LIBRARY #####
80+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #
81+ # CPP Shared Library Block [END] #
82+ ##################################
6583
6684##### PYBIND11 LIBRARY #####
6785
6886ament_python_install_package (${PROJECT_NAME } )
6987
70- pybind11_add_module (_${PROJECT_NAME} SHARED src/sas_robot_driver_py.cpp src/sas_robot_driver_client.cpp src/sas_robot_driver_server.cpp )
88+ pybind11_add_module (_${PROJECT_NAME} SHARED
89+ src/sas_robot_driver_py.cpp
90+ src/sas_robot_driver_client.cpp
91+ src/sas_robot_driver_server.cpp
92+ )
93+
94+ target_link_libraries (_${PROJECT_NAME} PRIVATE ${PROJECT_NAME } -ldqrobotics )
7195
7296target_include_directories (_${PROJECT_NAME}
7397 PUBLIC
7498 $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
7599 $<INSTALL_INTERFACE :include >)
76100
77- target_compile_definitions (_${PROJECT_NAME} PRIVATE IS_SAS_PYTHON_BUILD )
78- # https://github.com/pybind/pybind11/issues/387
79- target_link_libraries (_${PROJECT_NAME} PRIVATE ${PROJECT_NAME } -ldqrobotics )
80-
81101install (TARGETS _${PROJECT_NAME }
82102 DESTINATION "${PYTHON_INSTALL_DIR} /${PROJECT_NAME } "
83103)
0 commit comments