# ======================================================== # ROOT CMakeLists.txt # Đặt ở: Navigations/CMakeLists.txt # ======================================================== cmake_minimum_required(VERSION 3.0.2) project(navigations VERSION 1.0.0 LANGUAGES CXX) # Chuẩn C++ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() # Flags chung set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") message(STATUS "========================================") message(STATUS "Building Navigations Project") message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") message(STATUS "C++ Standard: ${CMAKE_CXX_STANDARD}") message(STATUS "========================================") # Build các packages theo thứ tự phụ thuộc # 1. Core libraries (header-only hoặc base libraries) if (NOT TARGET tf3) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/tf3) endif() if (NOT TARGET robot_time) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/robot_time) endif() if (NOT TARGET xmlrpcpp) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/xmlrpcpp) endif() if (NOT TARGET robot_cpp) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/robot_cpp) endif() if (NOT TARGET data_convert) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/data_convert) endif() if (NOT TARGET geometry2) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/geometry2) endif() if (NOT TARGET common_msgs) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/common_msgs) endif() if (NOT TARGET laser_geometry) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/laser_geometry) endif() if (NOT TARGET voxel_grid) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/voxel_grid) endif() if (NOT TARGET nav_grid) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Libraries/nav_grid) endif() if (NOT TARGET nav_2d_msgs) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/nav_2d_msgs) endif() if (NOT TARGET costmap_2d) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/costmap_2d) endif() if (NOT TARGET nav_2d_utils) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Libraries/nav_2d_utils) endif() if (NOT TARGET nav_core) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Cores/nav_core) endif() if (NOT TARGET nav_core2) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Cores/nav_core2) endif() if (NOT TARGET nav_core_adapter) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Cores/nav_core_adapter) endif() if (NOT TARGET move_base_core) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Cores/move_base_core) endif() if (NOT TARGET mkt_msgs) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Libraries/mkt_msgs) endif() if (NOT TARGET angles) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Libraries/angles) endif() if (NOT TARGET kalman) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Libraries/kalman) endif() if (NOT TARGET score_algorithm) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Cores/score_algorithm) endif() #if (NOT TARGET mkt_algorithm) # add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Libraries/mkt_algorithm) #endif() if (NOT TARGET two_points_planner) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Packages/global_planners/two_points_planner) endif() # 2. Main packages (phụ thuộc vào cores) message(STATUS "[move_base] Shared library configured") if (NOT TARGET move_base) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Packages/move_base) endif() # C API for .NET/C# integration if (NOT TARGET navigation_c_api) add_subdirectory(${CMAKE_SOURCE_DIR}/src/APIs/c_api) endif() message(STATUS "========================================") message(STATUS "All packages configured successfully") message(STATUS "========================================")