Skip to content

Commit 941a6d6

Browse files
committed
[CMakeLists.txt] Updating to lyrical
1 parent 37786a8 commit 941a6d6

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

CMakeLists.txt

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
cmake_minimum_required(VERSION 3.8)
1+
cmake_minimum_required(VERSION 3.20)
22
project(sas_robot_driver)
33

4+
# Default to C++20
5+
if(NOT CMAKE_CXX_STANDARD)
6+
set(CMAKE_CXX_STANDARD 20)
7+
endif()
8+
49
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
510
add_compile_options(-Wall -Wextra -Wpedantic)
611
endif()
@@ -15,41 +20,52 @@ add_subdirectory(pybind11)
1520
###############################
1621

1722
find_package(ament_cmake REQUIRED)
23+
find_package(ament_cmake_python REQUIRED)
24+
find_package(Eigen3 REQUIRED)
1825
find_package(rclcpp REQUIRED)
1926
find_package(geometry_msgs REQUIRED)
2027
find_package(std_msgs REQUIRED)
2128
find_package(sensor_msgs REQUIRED)
2229
find_package(sas_common REQUIRED)
2330
find_package(sas_core REQUIRED)
2431
find_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

2940
add_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-
3746
target_include_directories(${PROJECT_NAME}
3847
PUBLIC
3948
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
4049
$<INSTALL_INTERFACE:include>)
4150

4251
ament_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

4553
install(
4654
DIRECTORY include/
4755
DESTINATION include
4856
)
4957

5058
target_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

5571
install(
@@ -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

6886
ament_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

7296
target_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-
81101
install(TARGETS _${PROJECT_NAME}
82102
DESTINATION "${PYTHON_INSTALL_DIR}/${PROJECT_NAME}"
83103
)

0 commit comments

Comments
 (0)