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()
ament_cmake生成ROS2库并链接
猜你喜欢
转载自blog.csdn.net/qq_27865227/article/details/122471833
今日推荐
周排行