Linux知识点(8)_ROS下如何利用CMakeLists.txt进行多目录工程管理?

在程序开发中,如果工程比较小,我们通常是把.cpp文件往主程序的CMakeLists.txt文件里面写,但是如果遇到一个系统工程,比如模块化开发,就会涉及到多个目录下.cpp文件的编译,如果这个时候再把.cpp一个个往主程序写,这个工作量也是相当繁杂的。因此这里以ROS工程为例,介绍一下多目录工程管理。
比如在ROS下有这样的一个功能包:
在这里插入图片描述
apps/目录下的lidar_perception_node为当前工程的主程序(即main入口)。
那么src下的这些目录,该怎么链接到主程序上?这里以cloudfilter目录为例:
在这里插入图片描述
可以看到这里有两个CMakeLists.txt文件,先打开cloudfilter/CMakeLists.txt:

aux_source_directory(. DIR_CLOUDFILTER_SRCS)
add_library(cloudfilter ${DIR_CLOUDFILTER_SRCS})

即把当前目录下所有源文件赋给DIR_CLOUDFILTER_SRCS,生成依赖文件cloudfilter。

再看顶层的CMakeLists.txt:

include_directories(
  include/
)
add_subdirectory(src/cloudfilter)
# Target
add_executable(lidar_perception apps/lidar_perception_node.cpp )
target_link_libraries(lidar_perception cloudfilter)

add_subdirectory(src/cloudfilter)#该命令告诉CMake去子目录中查看可用的CMakeLists.txt文件

over!
aux_source_directory()
add_subdirectory()
掌握两个语句就可以让你的CMake工程显得没那么复杂了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值