Ros Cmakelist 编译配置

前言;

编译配置主要有宏设置、包依赖、Cmake编译管理、catkin编译策略等。

宏设置

包依赖package.xml文件

编译管理CMakeList.txt文件

catkin编译策略:catkin编译策略主要指编译目标是Release、Debug、编译输出空间等。

宏设置:

目标路径 set(CATKIN_GLOBAL_LIB_DESTINATION lib)

编译要求:

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

包依赖package.xml文件:

配置程序包的编译、执行、测试依赖以及插件、程序包集等

build_depend描述了程序包的编译依赖

 exec_depend描述了程序包的执行依赖等

test_depend描述了进行单元测试的依赖项

export标签描述了额外添加的信息如插件、程序包集

特定依赖:

#  消息生成
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>


#  单元测试
<build_depend>rostest</build_depend>


#  消息
<build_depend>sensor_msgs</build_depend>
<build_depend>geometry_msgs</build_depend>

 
#  插件
<export>
<nodelet plugin="${prefix}/nodelet_description.xml"/>
</export>


#  程序包集
<export>
<metapackage />
</export>

程序包依赖配置:

配置第三方软件、程序包、消息、头文件等依赖。

当前包的依赖包        find_package()

依赖当前包的声明    catkin_package()

生成消息、服务所需的依赖    generate_messages()

Python脚本需要        catkin_python_setup()

find_package(catkin REQUIRED COMPONENTSactionlib_msgs message_generation roscpp std_msgs)


#找依赖
catkin_package( INCLUDE_DIRS include
LIBRARIES actionlib
CATKIN_DEPENDS actionlib_msgs message_runtimeroscpp std_msgs
DEPENDS Boost )


#找包
find_package(Boost REQUIRED COMPONENTSthread)generate_messages(DEPENDENCIES 


#添加msg
geometry_msgsstd_msgs actionlib_msgs)


#python代码
catkin_python_setup()

文件声明:

 add_message_files()

 add_service_files()

 add_action_files() 

 generate_dynamic_reconfigure_options() 配置消息、服务、行为、动态参数等的声明文件。

#编译目录下的文件
add_message_files( DIRECTORY msg
FILES
GridCells.msg
MapMetaData.msg
OccupancyGrid.msg
Odometry.msg
Path.msg)


#srv的相对文件
add_service_files( DIRECTORY srv
FILES
GetMap.srv
GetPlan.srv
SetMap.srv
LoadMap.srv)



# 动态参数配置放置位置 cfg 目录下
add_action_files( FILES
GetMap.action)
generate_dynamic_reconfigure_options(cfg/Test.cfg)

编译目标配置:

配置引用的头文件、可执行目标文件、要链接的库文件等。

include_directories()

add_executable()

add_library()

target_link_libraries()

#链接的库 和链接的.cpp 文件的地方 档前文件  系统 和 外部的头h 文件

include_directories(
include ${catkin_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
add_executable(shape_server src/shape_server.cpp)


add_library(actionlib src/connection_monitor.cpp
src/goal_id_generator.cpp)


target_link_libraries(actionlib
${catkin_LIBRARIES}
${Boost_LIBRARIES})

编译安装:

配置安装的可执行脚本、可执行目标文件、头文件、库文件以及Luanch文件、bag文件等。

 catkin_install_python()

 install()


catkin_install_python(PROGRAMS scripts/genaction.py      #python
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})           #宏安装目录


install(TARGETS flat_world_imu_node RUNTIMEDESTINATION   #可执行的目标文件
${CATKIN_PACKAGE_BIN_DESTINATION})                       #放置的位置

 
install(DIRECTORY include/${PROJECT_NAME}/DESTINATION    # 目标位置
${CATKIN_PACKAGE_INCLUDE_DESTINATION} )


install(DIRECTORY bag config launch rviz DESTINATION${CATKIN_PACKAGE_SHARE_DESTINATION} )
# 安装多个文件夹

单元测试 gtest:

设置单元测试的目标可执行文件/脚本、链接库等

 catkin_add_gtest()

 catkin_add_nosetests()

catkin_add_gtest(cache_unittest test/cache_unittest.cpp)
catkin_add_nosetests(utest.py)

条件编译:

 判断目标文件
if(TARGET sensor_msgs_test) endif


 判断编译环境
if(CMAKE_BUILD_TYPE STREQUAL DEBUG)
endif()
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()


 判断测试
if(CATKIN_ENABLE_TESTING)
catkin_add_gtest(${PROJECT_NAME}_test test/example_1_test.cpp)
target_link_libraries(${PROJECT_NAME}_test ${catkin_LIBRARIES})
endif()


 打开/关闭测试开关:
catkin config -DCATKIN_ENABLE_TESTING=ON/OFF
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忒懂先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值