Skip to content

Commit

Permalink
feat: cmake optimization in progress
Browse files Browse the repository at this point in the history
Signed-off-by: Kenzo Lobos-Tsunekawa <[email protected]>
  • Loading branch information
knzo25 committed May 14, 2024
1 parent be26ceb commit 14ac7fc
Show file tree
Hide file tree
Showing 15 changed files with 881 additions and 271 deletions.
30 changes: 21 additions & 9 deletions nebula_common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,9 @@ cmake_minimum_required(VERSION 3.14)
project(nebula_common)

find_package(ament_cmake_auto REQUIRED)
find_package(PCL REQUIRED)
find_package(PCL REQUIRED COMPONENTS common)
find_package(pcl_conversions REQUIRED)
find_package(yaml-cpp REQUIRED)

ament_auto_find_build_dependencies()

# Default to C++17
if (NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
Expand All @@ -35,12 +31,28 @@ include_directories(
${PCL_COMMON_INCLUDE_DIRS}
)

ament_auto_add_library(nebula_common SHARED
src/nebula_common.cpp
src/velodyne/velodyne_calibration_decoder.cpp
)
link_libraries(
${PCL_LIBRARIES}
${YAML_CPP_LIBRARIES}
)

add_library(nebula_common SHARED
src/nebula_common.cpp
src/velodyne/velodyne_calibration_decoder.cpp
)

install(TARGETS nebula_common EXPORT export_nebula_common)
install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME})

ament_export_include_directories("include/${PROJECT_NAME}")
ament_export_targets(export_nebula_common)

ament_export_dependencies(
PCL
yaml-cpp
)

ament_auto_package()
ament_package()

# Set ROS_DISTRO macros
set(ROS_DISTRO $ENV{ROS_DISTRO})
Expand Down
1 change: 0 additions & 1 deletion nebula_common/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
<buildtool_depend>ros_environment</buildtool_depend>

<depend>libpcl-all-dev</depend>
<depend>pcl_conversions</depend>
<depend>yaml-cpp</depend>

<test_depend>ament_cmake_gtest</test_depend>
Expand Down
167 changes: 134 additions & 33 deletions nebula_decoders/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ project(nebula_decoders)

find_package(ament_cmake_auto REQUIRED)

ament_auto_find_build_dependencies()
#ament_auto_find_build_dependencies()

# Default to C++17
if (NOT CMAKE_CXX_STANDARD)
Expand All @@ -14,58 +14,159 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic -Wunused-function)
endif ()

find_package(PCL REQUIRED COMPONENTS common)
#find_package(pcl_conversions REQUIRED)

find_package(angles REQUIRED)
find_package(PCL REQUIRED)
find_package(pcl_conversions REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(continental_msgs REQUIRED)
find_package(diagnostic_msgs REQUIRED)
find_package(nebula_common REQUIRED)
find_package(nebula_msgs REQUIRED)
find_package(pandar_msgs REQUIRED)
find_package(pcl_conversions REQUIRED)
find_package(radar_msgs REQUIRED)
find_package(rclcpp REQUIRED)
find_package(robosense_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(velodyne_msgs REQUIRED)
find_package(yaml-cpp REQUIRED)

include_directories(PUBLIC
include
SYSTEM
)

include_directories(
include
SYSTEM
${YAML_CPP_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
${PCL_COMMON_INCLUDE_DIRS}
set(common_include_dirs
${nebula_common_INCLUDE_DIRS}
${YAML_CPP_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
${PCL_COMMON_INCLUDE_DIRS}
${pcl_conversions_INCLUDE_DIRS}
${rcl_INCLUDE_DIRS}
${rclcpp_INCLUDE_DIRS}
${sensor_msgs_INCLUDE_DIRS}
)

set(common_targets
${nebula_common_TARGETS}
${pcl_conversions_LIBRARIES}
${rcl_TARGETS}
${rclcpp_TARGETS}
${sensor_msgs_TARGETS}
)

# Lidar Decoders
# Hesai
ament_auto_add_library(nebula_decoders_hesai SHARED
src/nebula_decoders_hesai/hesai_driver.cpp
)
add_library(nebula_decoders_hesai SHARED
src/nebula_decoders_hesai/hesai_driver.cpp
)
target_link_libraries(nebula_decoders_hesai PUBLIC
${pandar_msgs_TARGETS}
${common_targets}
)

target_include_directories(nebula_decoders_hesai PUBLIC
${pandar_msgs_INCLUDE_DIRS}
${common_include_dirs}
)

# Velodyne
ament_auto_add_library(nebula_decoders_velodyne SHARED
src/nebula_decoders_velodyne/velodyne_driver.cpp
src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
src/nebula_decoders_velodyne/decoders/vlp16_decoder.cpp
src/nebula_decoders_velodyne/decoders/vlp32_decoder.cpp
)
add_library(nebula_decoders_velodyne SHARED
src/nebula_decoders_velodyne/velodyne_driver.cpp
src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
src/nebula_decoders_velodyne/decoders/vlp16_decoder.cpp
src/nebula_decoders_velodyne/decoders/vlp32_decoder.cpp
)
target_link_libraries(nebula_decoders_velodyne PUBLIC
${angles_msgs_TARGETS}
${velodyne_msgs_TARGETS}
${common_targets}
)
target_include_directories(nebula_decoders_velodyne PUBLIC
${angles_INCLUDE_DIRS}
${velodyne_msgs_INCLUDE_DIRS}
${common_include_dirs}
)

# Robosense
ament_auto_add_library(nebula_decoders_robosense SHARED
src/nebula_decoders_robosense/robosense_driver.cpp
)

ament_auto_add_library(nebula_decoders_robosense_info SHARED
src/nebula_decoders_robosense/robosense_info_driver.cpp
)
add_library(nebula_decoders_robosense SHARED
src/nebula_decoders_robosense/robosense_driver.cpp
)
target_link_libraries(nebula_decoders_robosense PUBLIC
${robosense_msgs_TARGETS}
${common_targets}
)
target_include_directories(nebula_decoders_robosense PUBLIC
${robosense_msgs_INCLUDE_DIRS}
${common_include_dirs}
)

# Continental
ament_auto_add_library(nebula_decoders_continental SHARED
src/nebula_decoders_continental/decoders/continental_ars548_decoder.cpp
)
add_library(nebula_decoders_continental SHARED
src/nebula_decoders_continental/decoders/continental_ars548_decoder.cpp
)
target_link_libraries(nebula_decoders_continental PUBLIC
${continental_msgs_TARGETS}
${diagnostic_msgs_TARGETS}
${boost_udp_driver_TARGETS}
${nebula_common_TARGETS}
${nebula_msgs_TARGETS}
${radar_msgs_TARGETS}
${common_targets}
)
target_include_directories(nebula_decoders_continental PUBLIC
${continental_msgs_INCLUDE_DIRS}
${diagnostic_msgs_INCLUDE_DIRS}
${boost_udp_driver_INCLUDE_DIRS}
${nebula_common_INCLUDE_DIRS}
${nebula_msgs_INCLUDE_DIRS}
${radar_msgs_INCLUDE_DIRS}
${common_include_dirs}
)

install(TARGETS nebula_decoders_hesai EXPORT export_nebula_decoders_hesai)
install(TARGETS nebula_decoders_velodyne EXPORT export_nebula_decoders_velodyne)
install(TARGETS nebula_decoders_robosense EXPORT export_nebula_decoders_robosense)
install(TARGETS nebula_decoders_continental EXPORT export_nebula_decoders_continental)
install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME})

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()

ament_auto_package(
INSTALL_TO_SHARE
calibration
)
ament_export_include_directories("include/${PROJECT_NAME}")
ament_export_targets(export_nebula_decoders_hesai)
ament_export_targets(export_nebula_decoders_velodyne)
ament_export_targets(export_nebula_decoders_robosense)
ament_export_targets(export_nebula_decoders_continental)

install(
DIRECTORY calibration
DESTINATION share/${PROJECT_NAME}
)

ament_export_dependencies(
PCL
pcl_conversions
angles
continental_msgs
diagnostic_msgs
nebula_common
nebula_msgs
pandar_msgs
radar_msgs
rcl
rclcpp
rclcpp_components
robosense_msgs
sensor_msgs
velodyne_msgs
yaml-cpp
)

#ament_auto_package(
ament_package()

# Set ROS_DISTRO macros
set(ROS_DISTRO $ENV{ROS_DISTRO})
Expand Down
100 changes: 75 additions & 25 deletions nebula_examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,101 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
endif()

find_package(ament_cmake_auto REQUIRED)
find_package(PCL REQUIRED COMPONENTS common)
find_package(PCL REQUIRED)
find_package(pcl_conversions REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(nebula_decoders REQUIRED)
find_package(nebula_hw_interfaces REQUIRED)
find_package(nebula_ros REQUIRED)
find_package(nebula_common REQUIRED)
find_package(PCL REQUIRED COMPONENTS common)
find_package(pcl_conversions REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rosbag2_cpp REQUIRED)
find_package(yaml-cpp REQUIRED)

ament_auto_find_build_dependencies()
#ament_auto_find_build_dependencies()

include_directories(
include
SYSTEM
${YAML_CPP_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
${PCL_COMMON_INCLUDE_DIRS}
include
SYSTEM
${nebula_decoders_INCLUDE_DIRS}
${nebula_ros_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
${PCL_COMMON_INCLUDE_DIRS}
${rosbag2_cpp_INCLUDE_DIRS}
${YAML_CPP_INCLUDE_DIRS}
)

message(STATUS "rosbag_cpp_INCLUDE_DIRS: ${rosbag2_cpp_INCLUDE_DIRS}")
message(STATUS "rosbag_cpp_LIBRARIES: ${rosbag2_cpp_LIBRARIES}")
message(STATUS "rosbag_cpp_TARGETS: ${rosbag2_cpp_TARGETS}")

link_libraries(
${rosbag2_cpp_TARGETS}
${PCL_LIBRARIES}
)

message(STATUS "nebula_ros_INCLUDE_DIRS: ${nebula_ros_INCLUDE_DIRS}")

## HESAI
# Offline Lib
ament_auto_add_library(hesai_ros_offline_extract_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_pcd.cpp
add_library(hesai_ros_offline_extract_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_pcd.cpp
)
target_link_libraries(hesai_ros_offline_extract_pcd PUBLIC
nebula_decoders::nebula_decoders_hesai
)

add_executable(hesai_ros_offline_extract_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_pcd_main.cpp
)
target_link_libraries(hesai_ros_offline_extract_pcd ${PCL_LIBRARIES})
ament_auto_add_executable(hesai_ros_offline_extract_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_pcd_main.cpp

target_link_libraries(hesai_ros_offline_extract_pcd_node PUBLIC
hesai_ros_offline_extract_pcd
)

# Extraction for TEST Lib
ament_auto_add_library(hesai_ros_offline_extract_bag_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_bag_pcd.cpp
add_library(hesai_ros_offline_extract_bag_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_bag_pcd.cpp
)
target_link_libraries(hesai_ros_offline_extract_bag_pcd ${PCL_LIBRARIES})
ament_auto_add_executable(hesai_ros_offline_extract_bag_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_bag_pcd_main.cpp
target_link_libraries(hesai_ros_offline_extract_bag_pcd PUBLIC
nebula_decoders::nebula_decoders_hesai
)

add_executable(hesai_ros_offline_extract_bag_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/hesai/hesai_ros_offline_extract_bag_pcd_main.cpp
)

target_link_libraries(hesai_ros_offline_extract_bag_pcd_node PUBLIC
hesai_ros_offline_extract_bag_pcd
)

## Velodyne
# Extraction for TEST Lib
ament_auto_add_library(velodyne_ros_offline_extract_bag_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd.cpp
add_library(velodyne_ros_offline_extract_bag_pcd SHARED
${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd.cpp
)
target_link_libraries(velodyne_ros_offline_extract_bag_pcd PUBLIC
nebula_decoders::nebula_decoders_velodyne
)
target_link_libraries(velodyne_ros_offline_extract_bag_pcd ${PCL_LIBRARIES})
ament_auto_add_executable(velodyne_ros_offline_extract_bag_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd_main.cpp

add_executable(velodyne_ros_offline_extract_bag_pcd_node
${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd_main.cpp
)

target_link_libraries(velodyne_ros_offline_extract_bag_pcd_node PUBLIC
velodyne_ros_offline_extract_bag_pcd
)


#ament_auto_add_library(velodyne_ros_offline_extract_bag_pcd SHARED
# ${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd.cpp
#)
#target_link_libraries(velodyne_ros_offline_extract_bag_pcd ${PCL_LIBRARIES})
#ament_auto_add_executable(velodyne_ros_offline_extract_bag_pcd_node
# ${CMAKE_CURRENT_SOURCE_DIR}/src/velodyne/velodyne_ros_offline_extract_bag_pcd_main.cpp
#)



if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
Expand Down
Loading

0 comments on commit 14ac7fc

Please sign in to comment.