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