当前位置:网站首页>ament_cmake生成ROS2库并链接
ament_cmake生成ROS2库并链接
2022-07-26 05:49:00 【鱼香ROS】
cmake_minimum_required(VERSION 3.5)
project(arm_controller)
set(BUILD_TEST TRUE)
set(LIB_NAME libarmcore)
# Default to C99
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_action REQUIRED)
find_package(comm_interfaces REQUIRED)
find_package(trajectory_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(spdlog REQUIRED)
include_directories(
include/
)
LINK_DIRECTORIES(
${
CMAKE_CURRENT_SOURCE_DIR}/libs
${
CMAKE_INSTALL_PREFIX}/lib
)
add_library(libarmcore SHARED
#interface
src/config/ArmConfigInterface.cpp
#jaka
# src/arm/ArmJaka.cpp
src/arm/ArmJakaTcp.cpp
src/arm/ArmLittleJakaTcp.cpp
src/arm/ArmTest.cpp
#pose
src/pose/Pose.cpp
#error
src/ArmErrors.cpp
#controller
src/arm/ArmController.cpp
#factory
src/ArmFactory.cpp
#tools
src/tools/YamlTool.cpp
src/tools/StringTool.cpp
src/tools/NetTool.cpp
#tcp
src/tools/tcp/client.cpp
src/tools/tcp/server.cpp
#log
src/ArmLogger.cpp
#python
src/Controller.cpp
)
target_include_directories(libarmcore PUBLIC
$<BUILD_INTERFACE:${
CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
ament_target_dependencies(libarmcore PUBLIC
${
Boost_LIBRARIES}
rclcpp
trajectory_msgs
geometry_msgs
comm_interfaces
)
#ament_export_targets(libarmcore HAS_LIBRARY_TARGET)
#ament_export_dependencies(rclcpp)
install(
DIRECTORY include/
DESTINATION include
)
install(
TARGETS libarmcore
EXPORT libarmcore
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
add_executable(${
PROJECT_NAME}
src/main.cpp
)
target_link_libraries(${
PROJECT_NAME}
libarmcore
jsoncpp
yaml-cpp
spdlog
)
ament_target_dependencies(${
PROJECT_NAME}
rclcpp
trajectory_msgs
geometry_msgs
rclcpp_action
comm_interfaces
)
install(TARGETS
${
PROJECT_NAME}
DESTINATION lib/${
PROJECT_NAME}
)
if (BUILD_TEST )
add_executable(test_${
PROJECT_NAME}
test/test.cpp
)
target_link_libraries(test_${
PROJECT_NAME}
libarmcore
jsoncpp
yaml-cpp
spdlog
)
ament_target_dependencies(test_${
PROJECT_NAME}
rclcpp
trajectory_msgs
geometry_msgs
rclcpp_action
comm_interfaces
)
install(TARGETS
test_${
PROJECT_NAME}
DESTINATION lib/${
PROJECT_NAME})
endif()
ament_package()
边栏推荐
猜你喜欢
C language explanation series - understanding of functions (4) declaration and definition of functions, simple exercises

MBA-day28 数的概念-练习题

Hack the box - Introduction to networking module detailed Chinese tutorial

How students apply for free idea

Usage and common problems of SIP softphone registered with SIP account

ES Cluster in Red status: what about write & delete operations?

Yolov3 preparatory work

Unity2D 动画器无法 创建过渡

CANoe-XML在Test Modules中的应用

5-year-old Test Engineer - how to choose the next step?
随机推荐
Use of feign (Part 2)
No EGL Display 报错解决
Learn about spark project on nebulagraph
金仓数据库 KingbaseES SQL 语言参考手册 (5. 操作符)
Day110. Shangyitong: gateway integration, hospital scheduling management: Department list, statistics based on date, scheduling details
二叉排序树(BST) ~
数仓搭建-DIM层
Introduction to Chinese text error correction task
金仓数据库 KingbaseES SQL 语言参考手册 (11. SQL语句:ABORT 到 ALTER INDEX)
Select sort / insert sort / bubble sort
项目版本号怎么命名?看起来牛B
Should we test the Dao layer?
Another open source artifact, worth collecting and learning!
Qt编写物联网管理平台47-通用数据库设置
102. (cesium chapter) cesium road streamer
Realize channel routing based on policy mode
Mysql45 speak in simple terms index
Chapter 2 - getting started
Mongodb common commands
Two auxiliary functions of integral Mall for business user operation