cmake_minimum_required(VERSION 3.0.2) project(invicta_remote) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() find_package(catkin REQUIRED COMPONENTS roscpp sensor_msgs invicta_msgs roslib ) catkin_package( INCLUDE_DIRS include CATKIN_DEPENDS roscpp sensor_msgs invicta_msgs ) # TOML 解析库:single-header,vendored 在 third_party/tomlplusplus/toml++/toml.hpp # 单头版本本身就是 header-only(自带 TOML_HEADER_ONLY),实现直接编进本节点:无 find_package、无运行时库依赖 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/third_party/tomlplusplus) include_directories( include ${catkin_INCLUDE_DIRS} ) # 把本节点自己的配置头列进源列表:改该头会触发重编(改 TOML 不用重编) set(NODE_CONFIG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/invicta_remote/remote_config.h") if(NOT EXISTS "${NODE_CONFIG_HEADER}") message(WARNING "invicta_remote_node: 找不到本节点配置头") set(NODE_CONFIG_HEADER "") endif() add_executable(invicta_remote_node src/invicta_remote_node.cpp ${NODE_CONFIG_HEADER} ) target_link_libraries(invicta_remote_node ${catkin_LIBRARIES} -lpthread ) install(TARGETS invicta_remote_node RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) install(DIRECTORY launch config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} )