From 5c276afb3469a4618e3d2f3523a27bff2f9fb3c8 Mon Sep 17 00:00:00 2001 From: HiepLM Date: Mon, 5 Jan 2026 13:37:48 +0700 Subject: [PATCH] update hieplm --- robot_geometry_msgs/CMakeLists.txt | 43 ++++++++++++++- robot_geometry_msgs/package.xml | 8 ++- robot_map_msgs/CMakeLists.txt | 34 +++++++++++- .../robot_map_msgs/OccupancyGridUpdate.h | 3 +- robot_map_msgs/package.xml | 16 ++---- robot_nav_msgs/CMakeLists.txt | 38 ++++++++++++- robot_nav_msgs/package.xml | 15 ++--- robot_protocol_msgs/CMakeLists.txt | 35 ++++++++++-- robot_protocol_msgs/package.xml | 8 +-- robot_sensor_msgs/CMakeLists.txt | 35 +++++++++++- robot_sensor_msgs/package.xml | 7 ++- robot_std_msgs/CMakeLists.txt | 34 ++++++++++++ robot_std_msgs/package.xml | 6 +- robot_visualization_msgs/CMakeLists.txt | 55 ++++++++++++++++++- robot_visualization_msgs/package.xml | 3 - utils/CMakeLists.txt | 42 ++++++++++++-- utils/{ => include}/utils.h | 0 utils/package.xml | 4 -- 18 files changed, 327 insertions(+), 59 deletions(-) rename utils/{ => include}/utils.h (100%) diff --git a/robot_geometry_msgs/CMakeLists.txt b/robot_geometry_msgs/CMakeLists.txt index 2b24d03..1397dcd 100644 --- a/robot_geometry_msgs/CMakeLists.txt +++ b/robot_geometry_msgs/CMakeLists.txt @@ -4,6 +4,36 @@ project(robot_geometry_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake +# ======================================================== + +# Detect if building with Catkin +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_geometry_msgs with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_geometry_msgs with Standalone CMake") +endif() + +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_std_msgs utils robot_time) + ## The catkin_package macro generates cmake config files for your package + ## Note: Dependencies (robot_std_msgs, utils, etc.) are not Catkin packages, + ## they are built as CMake targets in the same workspace and will be available + ## when this package is built. They are linked via target_link_libraries instead of CATKIN_DEPENDS + catkin_package( + INCLUDE_DIRS include + # LIBRARIES không cần vì đây là header-only library + # CATKIN_DEPENDS không cần vì dependencies không phải Catkin packages + ) +endif() + # Thư viện header-only add_library(robot_geometry_msgs INTERFACE) @@ -21,13 +51,22 @@ target_link_libraries(robot_geometry_msgs INTERFACE robot_std_msgs utils) add_library(geometry_msgs ALIAS robot_geometry_msgs) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_geometry_msgs EXPORT robot_geometry_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Xuất export set robot_costmap_2dTargets thành file CMake module --- -# --- Tạo file lib/cmake/robot_geometry_msgs/robot_costmap_2dTargets.cmake --- +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + +# --- Xuất export set robot_geometry_msgs-targets thành file CMake module --- +# --- Tạo file lib/cmake/robot_geometry_msgs/robot_geometry_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(robot_geometry_msgs REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE robot_geometry_msgs::robot_geometry_msgs) --- diff --git a/robot_geometry_msgs/package.xml b/robot_geometry_msgs/package.xml index c8471ab..1341853 100644 --- a/robot_geometry_msgs/package.xml +++ b/robot_geometry_msgs/package.xml @@ -19,8 +19,12 @@ catkin - libconsole-bridge-dev + robot_std_msgs + utils + robot_time - libconsole-bridge-dev + robot_std_msgs + utils + robot_time \ No newline at end of file diff --git a/robot_map_msgs/CMakeLists.txt b/robot_map_msgs/CMakeLists.txt index c0745cb..82d7abd 100644 --- a/robot_map_msgs/CMakeLists.txt +++ b/robot_map_msgs/CMakeLists.txt @@ -4,6 +4,27 @@ project(robot_map_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_map_msgs with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_map_msgs with Standalone CMake") +endif() + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_std_msgs) + ## The catkin_package macro generates cmake config files for your package + catkin_package( + INCLUDE_DIRS include + # LIBRARIES không cần vì đây là header-only library + ) +endif() + # Thư viện header-only add_library(robot_map_msgs INTERFACE) @@ -18,13 +39,22 @@ target_include_directories(robot_map_msgs target_link_libraries(robot_map_msgs INTERFACE robot_std_msgs) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_map_msgs EXPORT robot_map_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Xuất export set robot_costmap_2dTargets thành file CMake module --- -# --- Tạo file lib/cmake/robot_map_msgs/robot_costmap_2dTargets.cmake --- +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + +# --- Xuất export set robot_map_msgs-targets thành file CMake module --- +# --- Tạo file lib/cmake/robot_map_msgs/robot_map_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(robot_map_msgs REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE robot_map_msgs::robot_map_msgs) --- diff --git a/robot_map_msgs/include/robot_map_msgs/OccupancyGridUpdate.h b/robot_map_msgs/include/robot_map_msgs/OccupancyGridUpdate.h index a5a5285..310c89c 100644 --- a/robot_map_msgs/include/robot_map_msgs/OccupancyGridUpdate.h +++ b/robot_map_msgs/include/robot_map_msgs/OccupancyGridUpdate.h @@ -2,7 +2,8 @@ #define ROBOT_OCCUPANCY_GRID_UPDATE_H #include -#include "robot_std_msgs/Header.h" +#include + namespace robot_map_msgs { struct OccupancyGridUpdate diff --git a/robot_map_msgs/package.xml b/robot_map_msgs/package.xml index 5f51ea0..3bfed82 100644 --- a/robot_map_msgs/package.xml +++ b/robot_map_msgs/package.xml @@ -1,13 +1,8 @@ - robot_nav_msgs + robot_map_msgs 0.7.10 - robot_nav_msgs is the second generation of the transform library, which lets - the user keep track of multiple coordinate frames over time. robot_nav_msgs - maintains the relationship between coordinate frames in a tree - structure buffered in time, and lets the user transform points, - vectors, etc between any two coordinate frames at any desired - point in time. + robot_map_msgs provides message types for map-related data structures. Tully Foote Eitan Marder-Eppstein @@ -15,12 +10,11 @@ Tully Foote BSD - http://www.ros.org/wiki/robot_nav_msgs + http://www.ros.org/wiki/robot_map_msgs catkin - libconsole-bridge-dev - - libconsole-bridge-dev + robot_std_msgs + robot_std_msgs \ No newline at end of file diff --git a/robot_nav_msgs/CMakeLists.txt b/robot_nav_msgs/CMakeLists.txt index 9f01f53..c2f9bdc 100644 --- a/robot_nav_msgs/CMakeLists.txt +++ b/robot_nav_msgs/CMakeLists.txt @@ -4,6 +4,31 @@ project(robot_nav_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_nav_msgs with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_nav_msgs with Standalone CMake") +endif() + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_std_msgs robot_geometry_msgs) + ## The catkin_package macro generates cmake config files for your package + ## Note: Dependencies (robot_std_msgs, robot_geometry_msgs, etc.) are not Catkin packages, + ## they are built as CMake targets in the same workspace and will be available + ## when this package is built. They are linked via target_link_libraries instead of CATKIN_DEPENDS + catkin_package( + INCLUDE_DIRS include + # LIBRARIES không cần vì đây là header-only library + # CATKIN_DEPENDS không cần vì dependencies không phải Catkin packages + ) +endif() + # Thư viện header-only add_library(robot_nav_msgs INTERFACE) @@ -22,13 +47,22 @@ target_link_libraries(robot_nav_msgs INTERFACE ) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_nav_msgs EXPORT robot_nav_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Xuất export set robot_costmap_2dTargets thành file CMake module --- -# --- Tạo file lib/cmake/robot_nav_msgs/robot_costmap_2dTargets.cmake --- +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + +# --- Xuất export set robot_nav_msgs-targets thành file CMake module --- +# --- Tạo file lib/cmake/robot_nav_msgs/robot_nav_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(robot_nav_msgs REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE robot_nav_msgs::robot_nav_msgs) --- diff --git a/robot_nav_msgs/package.xml b/robot_nav_msgs/package.xml index 9cb9704..898dd10 100644 --- a/robot_nav_msgs/package.xml +++ b/robot_nav_msgs/package.xml @@ -1,9 +1,9 @@ - robot_robot_nav_msgs + robot_nav_msgs 0.7.10 - robot_robot_nav_msgs is the second generation of the transform library, which lets - the user keep track of multiple coordinate frames over time. robot_robot_nav_msgs + robot_nav_msgs is the second generation of the transform library, which lets + the user keep track of multiple coordinate frames over time. robot_nav_msgs maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired @@ -15,12 +15,13 @@ Tully Foote BSD - http://www.ros.org/wiki/robot_robot_nav_msgs + http://www.ros.org/wiki/robot_nav_msgs catkin - libconsole-bridge-dev - - libconsole-bridge-dev + robot_std_msgs + robot_geometry_msgs + robot_std_msgs + robot_geometry_msgs \ No newline at end of file diff --git a/robot_protocol_msgs/CMakeLists.txt b/robot_protocol_msgs/CMakeLists.txt index 9177d5c..d1188d0 100644 --- a/robot_protocol_msgs/CMakeLists.txt +++ b/robot_protocol_msgs/CMakeLists.txt @@ -4,6 +4,28 @@ project(robot_protocol_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_protocol_msgs with Catkin") + +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_protocol_msgs with Standalone CMake") +endif() + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_std_msgs robot_geometry_msgs) + ## The catkin_package macro generates cmake config files for your package + catkin_package( + INCLUDE_DIRS include + LIBRARIES robot_protocol_msgs + CATKIN_DEPENDS robot_std_msgs robot_geometry_msgs + ) +endif() + # Thư viện header-only add_library(robot_protocol_msgs INTERFACE) @@ -18,16 +40,19 @@ target_include_directories(robot_protocol_msgs target_link_libraries(robot_protocol_msgs INTERFACE) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_protocol_msgs EXPORT robot_protocol_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Cài đặt headers --- -install(DIRECTORY include/ - DESTINATION include - FILES_MATCHING PATTERN "*.h" -) +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() # --- Xuất export set robot_protocol_msgs-targets thành file CMake module --- # --- Tạo file lib/cmake/robot_protocol_msgs/robot_protocol_msgs-targets.cmake --- diff --git a/robot_protocol_msgs/package.xml b/robot_protocol_msgs/package.xml index addf9af..98a39e8 100644 --- a/robot_protocol_msgs/package.xml +++ b/robot_protocol_msgs/package.xml @@ -19,8 +19,8 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev - + robot_std_msgs + robot_geometry_msgs + robot_std_msgs + robot_geometry_msgs \ No newline at end of file diff --git a/robot_sensor_msgs/CMakeLists.txt b/robot_sensor_msgs/CMakeLists.txt index 5b27f64..68f5cc3 100644 --- a/robot_sensor_msgs/CMakeLists.txt +++ b/robot_sensor_msgs/CMakeLists.txt @@ -4,6 +4,28 @@ project(robot_sensor_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_sensor_msgs with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_sensor_msgs with Standalone CMake") +endif() + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_std_msgs robot_geometry_msgs) + ## The catkin_package macro generates cmake config files for your package + catkin_package( + INCLUDE_DIRS include + LIBRARIES robot_sensor_msgs + CATKIN_DEPENDS robot_std_msgs robot_geometry_msgs + ) +endif() + # Thư viện header-only add_library(robot_sensor_msgs INTERFACE) @@ -18,13 +40,22 @@ target_include_directories(robot_sensor_msgs target_link_libraries(robot_sensor_msgs INTERFACE robot_std_msgs) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_sensor_msgs EXPORT robot_sensor_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Xuất export set robot_costmap_2dTargets thành file CMake module --- -# --- Tạo file lib/cmake/robot_sensor_msgs/robot_costmap_2dTargets.cmake --- +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + +# --- Xuất export set robot_sensor_msgs-targets thành file CMake module --- +# --- Tạo file lib/cmake/robot_sensor_msgs/robot_sensor_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(robot_sensor_msgs REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE robot_sensor_msgs::robot_sensor_msgs) --- diff --git a/robot_sensor_msgs/package.xml b/robot_sensor_msgs/package.xml index 053b439..2dc205e 100644 --- a/robot_sensor_msgs/package.xml +++ b/robot_sensor_msgs/package.xml @@ -19,8 +19,9 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev + robot_std_msgs + robot_geometry_msgs + robot_std_msgs + robot_geometry_msgs \ No newline at end of file diff --git a/robot_std_msgs/CMakeLists.txt b/robot_std_msgs/CMakeLists.txt index 47110f8..244eb4f 100644 --- a/robot_std_msgs/CMakeLists.txt +++ b/robot_std_msgs/CMakeLists.txt @@ -4,6 +4,31 @@ project(robot_std_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_std_msgs with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_std_msgs with Standalone CMake") +endif() + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED COMPONENTS robot_time) + + ## The catkin_package macro generates cmake config files for your package + ## Note: Dependencies (robot_time, etc.) are not Catkin packages, + ## they are built as CMake targets in the same workspace and will be available + ## when this package is built. They are linked via target_link_libraries instead of CATKIN_DEPENDS + catkin_package( + INCLUDE_DIRS include + LIBRARIES robot_std_msgs + CATKIN_DEPENDS robot_time + ) +endif() + add_library(robot_std_msgs INTERFACE) target_include_directories(robot_std_msgs @@ -15,11 +40,20 @@ target_include_directories(robot_std_msgs target_link_libraries(robot_std_msgs INTERFACE robot_time) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_std_msgs EXPORT robot_std_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + # --- Xuất export set robot_std_msgs-targets thành file CMake module --- # --- Tạo file lib/cmake/robot_std_msgs/robot_std_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- diff --git a/robot_std_msgs/package.xml b/robot_std_msgs/package.xml index a94c2be..d58b6a8 100644 --- a/robot_std_msgs/package.xml +++ b/robot_std_msgs/package.xml @@ -19,8 +19,8 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev + robot_time + + robot_time \ No newline at end of file diff --git a/robot_visualization_msgs/CMakeLists.txt b/robot_visualization_msgs/CMakeLists.txt index 1e4dca2..d22c36c 100644 --- a/robot_visualization_msgs/CMakeLists.txt +++ b/robot_visualization_msgs/CMakeLists.txt @@ -1,9 +1,40 @@ cmake_minimum_required(VERSION 3.10) + +# ======================================================== +# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake +# ======================================================== + +# Detect if building with Catkin +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_visualization_msgs with Catkin") + find_package(catkin REQUIRED) +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_visualization_msgs with Standalone CMake") +endif() + project(robot_visualization_msgs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(BUILDING_WITH_CATKIN) + ## The catkin_package macro generates cmake config files for your package + ## Note: Dependencies (robot_std_msgs) is not a Catkin package, + ## it is built as a CMake target in the same workspace and will be available + ## when this package is built. It is linked via target_link_libraries instead of CATKIN_DEPENDS + catkin_package( + INCLUDE_DIRS include + # LIBRARIES không cần vì đây là header-only library + # CATKIN_DEPENDS không cần vì dependencies không phải Catkin packages + ) +endif() + # Thư viện header-only add_library(robot_visualization_msgs INTERFACE) @@ -14,17 +45,37 @@ target_include_directories(robot_visualization_msgs $ ) +# Add include directories from dependencies explicitly for Catkin build +if(BUILDING_WITH_CATKIN) + # Use relative paths from current source directory + # From robot_visualization_msgs (pnkx_nav_core/src/Libraries/common_msgs/robot_visualization_msgs) + # to robot_std_msgs (pnkx_nav_core/src/Libraries/common_msgs/robot_std_msgs) is ../robot_std_msgs + get_filename_component(ROBOT_STD_MSGS_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../robot_std_msgs/include" ABSOLUTE) + target_include_directories(robot_visualization_msgs INTERFACE + $ + ) +endif() + # Liên kết với robot_std_msgs nếu bạn có file Header.h trong include/robot_std_msgs/ target_link_libraries(robot_visualization_msgs INTERFACE robot_std_msgs) # --- Cài đặt thư viện vào hệ thống khi chạy make install --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS robot_visualization_msgs EXPORT robot_visualization_msgs-targets INCLUDES DESTINATION include # Cài đặt include ) -# --- Xuất export set robot_costmap_2dTargets thành file CMake module --- -# --- Tạo file lib/cmake/robot_visualization_msgs/robot_costmap_2dTargets.cmake --- +if(NOT BUILDING_WITH_CATKIN) + # Install headers for standalone mode + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() + +# --- Xuất export set robot_visualization_msgs-targets thành file CMake module --- +# --- Tạo file lib/cmake/robot_visualization_msgs/robot_visualization_msgs-targets.cmake --- # --- File này chứa cấu hình giúp project khác có thể dùng --- # --- Find_package(robot_visualization_msgs REQUIRED) --- # --- Target_link_libraries(my_app PRIVATE robot_visualization_msgs::robot_visualization_msgs) --- diff --git a/robot_visualization_msgs/package.xml b/robot_visualization_msgs/package.xml index 02f8a9b..538ceda 100644 --- a/robot_visualization_msgs/package.xml +++ b/robot_visualization_msgs/package.xml @@ -19,8 +19,5 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev \ No newline at end of file diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 31d3766..cab1ac6 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -1,27 +1,57 @@ cmake_minimum_required(VERSION 3.10) +# ======================================================== +# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake +# ======================================================== + +# Detect if building with Catkin +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building utils with Catkin") + find_package(catkin REQUIRED) +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building utils with Standalone CMake") +endif() + # --- Project riêng cho utils --- project(utils LANGUAGES CXX) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(BUILDING_WITH_CATKIN) + ## The catkin_package macro generates cmake config files for your package + catkin_package( + INCLUDE_DIRS include + # LIBRARIES không cần vì đây là header-only library + ) +endif() + # --- Tạo INTERFACE library (header-only) --- add_library(utils INTERFACE) # --- Include directories --- target_include_directories(utils INTERFACE - $ # build nội bộ - $ # dùng khi install/export + $ # build nội bộ + $ # dùng khi install/export ) # --- Cài đặt header files --- -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ - DESTINATION include/utils - FILES_MATCHING PATTERN "*.h" -) +if(NOT BUILDING_WITH_CATKIN) + install(DIRECTORY include/ + DESTINATION include + FILES_MATCHING PATTERN "*.h" + ) +endif() # --- Cài đặt target INTERFACE để export --- +# Export target trong mọi trường hợp để các target khác có thể export và phụ thuộc vào nó install(TARGETS utils EXPORT utils-targets + INCLUDES DESTINATION include ) # --- Export target file --- diff --git a/utils/utils.h b/utils/include/utils.h similarity index 100% rename from utils/utils.h rename to utils/include/utils.h diff --git a/utils/package.xml b/utils/package.xml index c04ef35..52e44a2 100644 --- a/utils/package.xml +++ b/utils/package.xml @@ -19,8 +19,4 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev - \ No newline at end of file