Linux知识点(8)

    技术2024-07-05  86

    在程序开发中,如果工程比较小,我们通常是把.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 groundfilter)

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

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

    Processed: 0.009, SQL: 10