ament_cmake生成ROS2库并链接

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()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值