Cmakelists配置工程src和include文件

本文介绍了使用CMake进行项目构建时,如何利用aux_source_directory和file(GLOB_RECURSE)来自动收集src目录下的所有源文件(.cpp)及头文件(.h),简化配置过程并提高效率。

1、用aux_source_directory来配置src文件,但不能配置include文件

aux_source_directory(./src SRC_FILES)

file(GLOB_RECURSE project_HEADERS

                                         "a.h"

                                         "b.h" )

add_executable(${PROJECT_NAME}  ${SRC_FILES}  ${project_HEADERS})

这种方法不用挨个儿写src目录下的cpp文件,省事些

2、

file(GLOB_RECURSE  project_SOURSES

                                          "main.h"

                                          "a.h"

                                          "b.h"  )

file(GLOB_RECURSE project_HEADERS

                                         "a.h"

                                         "b.h" )

add_executable(${PROJECT_NAME}  ${PROJECT_SOURCES}  ${PROJECT_HEADERS})

 

 

### 如何在 CMakeLists.txt 中正确配置 PCL 点云库 要在 `CMakeLists.txt` 文件中正确配置 PCL 库,可以按照以下方法操作: #### 配置基础环境 首先,在项目中设置最低支持的 CMake 版本以及项目的名称。这可以通过以下命令实现: ```cmake cmake_minimum_required(VERSION 3.5) project(MyPCLProject) set(CMAKE_CXX_STANDARD 11) ``` 这里设置了 C++ 的标准版本为 11[^2]。 #### 查找并引入 PCL 库 为了能够使用 PCL 功能,需要通过 `find_package()` 函数来定位已安装的 PCL 库及其依赖项。以下是具体的代码片段: ```cmake find_package(PCL 1.11 REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) ``` 这段代码的作用是找到指定版本的 PCL 库(这里是 1.11),并将必要的头文件目录链接路径添加到构建环境中[^2]。 #### 定义可执行目标 定义一个基于源码的目标程序,并将其与所需的库进行链接。例如: ```cmake add_executable(pcl_downsampled src/pcl_downsampled.cpp) target_link_libraries(pcl_downsampled ${catkin_LIBRARIES} ${PCL_LIBRARIES}) ``` 此部分展示了如何创建名为 `pcl_downsampled` 的可执行文件,并将它与 Catkin PCL 提供的库相连接[^1]。 如果还需要其他外部库的支持,则可以在 `target_link_libraries` 命令中继续追加对应的库名列表。比如当涉及 OpenCV 处理图像数据时,可以这样写: ```cmake find_package(OpenCV REQUIRED) ... add_executable(kinect_fusion src/kinect_fusion.cpp) target_link_libraries(kinect_fusion ${PCL_LIBRARIES} ${OpenCV_LIBS}) ``` 以上例子来自另一个实际应用案例中的完整脚本结构[^2]。 #### 解决可能遇到的问题 有时即使完成了上述所有步骤仍可能出现运行期崩溃的情况,特别是尝试调用某些特定功能如点云渲染界面显示失败等问题。此时建议重新编译最新版 PCL 而非单纯依靠系统包管理器预装好的二进制版本,因为后者可能存在兼容性隐患[^3]。 --- ### 总结 综上所述,要成功集成 Point Cloud Library 到个人开发流程里需注意几个要点:一是合理规划好基本工程框架;二是精确导入所需资源位置信息;三是妥善处理各种潜在冲突状况。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值