尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Windows下MinGW源码编译PCL全流程:从Boost到VTK的依赖构建指南

发布时间:2026/9/26 8:55:17

资讯中心
01
ARTICLE

Windows下MinGW源码编译PCL全流程:从Boost到VTK的依赖构建指南

Windows下MinGW源码编译PCL全流程:从Boost到VTK的依赖构建指南
简介面向使用Qt与MinGW编译器进行三维点云应用开发的C工程师资源包完整集成了基于MinGW编译的PCL及其全部依赖库包括Boost、Eigen、FLANN、Qhull和VTK。它有效解决了依赖库版本不匹配、编译参数繁琐等常见问题可直接应用于点云数据读取、滤波、特征提取、表面重建与可视化渲染等场景。压缩包共2000个文件其中1997个为hpp头文件另外包含txt、pdf、doc格式的说明文档各1份整体大小为151.31MB。hpp头文件覆盖各库核心接口涵盖点云配准、分割、曲面重建等常用算法模块便于快速查阅与调用配套文档则梳理了依赖关系及编译配置要点能够帮助开发者跳过耗时耗力的源码构建过程。目前已有36人学习/下载适合具有一定C基础、希望快速搭建PCL开发环境的中高级开发者使用尤其适合需要避开MSVC与MinGW混用问题的工程场景。1. 为什么明明有 MSVC 方案还要用 MinGW 在 Windows 上硬啃 PCL当你打开 Qt Creator新建一个点云显示工程选好 MinGW 64 位套件链接 PCL 时大概率会撞上一堵墙PCL 官网只提供 Visual Studio 预编译包MinGW 环境下所有依赖都要自己从源码编译——boost、eigen、flann、qhull、VTK 一个都躲不掉。网上随手一搜出来的“Windows 下配置 PCL 最全面最详细配置”教程几乎全是 VS2017 的mingw 下的资料零零散散版本号还对不上。但坚持用 MinGW 的团队并不少有人不想给 MSVC 许可付费有人把 Linux 上的 CMake 工程直接搬到 Windows 复用还有人就是习惯了 Qt Creator 的调试体验。这套方案能换来一个完全开源、可脚本化的 Windows 点云开发环境。本文直接给你一条“从源码把所有依赖按顺序编起来”的完整路径包含命令、参数和这五六年反复踩过的坑。2. 编译前的工具链对齐MinGW 版本、CMake 生成器与依赖编译顺序2.1 MinGW 选型用 Qt 自带的 MinGW还是去 mingw官网下载独立版第一步其实不是下载源码而是统一编译器。Qt 安装包比如 Qt 5.15.2自带了 MinGW 8.1.0一般在 C:\Qt\Qt5.15.2\Tools\mingw810_64 目录下。我一般直接用这个自带的因为 Qt 官方就是用同一套编译器构建 mingw81_64 的 Qt 库版本匹配后“qt 编译时候 cannot find -lxxx”这类链接问题会少一半。也有不少教程推荐去 mingw官网下载 winlibs 或 w64devkit 的独立 MinGW-w64版本从 gcc 8 到 gcc 13 都有。独立版更干净但要小心它在系统 PATH 里的顺序会干扰 Qt 的 qmake。你既想要高版本 gcc又想让 Qt 找到合适的老版本库两者经常打架。先检查现有环境g --version qmake --version看输出里的 gcc 版本号是不是和 Qt 工具链目录一致。msvc 和 mingw 区别一句话就能说清MSVC 的库是 COFF/PE 格式链接器是 link.exeMinGW 用的是 GNU 工具链库是 .a/.dll.a 格式两边的 C ABI 也不同。所以 MSVC 编译的 PCL 预编译包在 MinGW 下根本没有利用价值这就是标题这串依赖必须走源码编译的根本原因。2.2 CMake 生成器为什么必须选 MinGW Makefiles假设你已经装好 CMake 3.20 并加入 PATH。在 Windows 上使用 MinGW 工具链时CMake 的生成器要显式写-G MinGW Makefiles而不是默认的 Visual Studio 生成器也不是 NMake Makefiles。用错生成器后 CMake configure 虽然能过但 build 阶段会调用 cl.exe 或 nmake立刻暴露编译器不匹配。我还有一个强迫症级别的习惯整个编译过程不使用任何带空格、中文、非 ASCII 字符的路径。全盘统一在 D:\dev 下按“源码目录 构建目录 安装前缀”三件套规划。比如 D:\dev\src\eigen-3.4.0、D:\dev\build\eigen-build安装前缀统一指向 D:\dev\pcl-deps\eigen。MinGW 的 make 对路径转义处理得很差路径干净能省掉后续 80% 的“玄学报错”。配置前先看一遍 CMake 缓存变量也是个好习惯。直接cmake -LAH打印所有缓存项能看到哪个库被找到了、哪个没找到。别一上来就闷头 buildconfigure 输出里那几行-- Found XXX比什么都靠谱。2.3 依赖编译顺序为什么 boost 必须在 flann 之前PCL 的直接依赖是 boost、eigen、flann、qhull、VTK但依赖之间还有二级依赖flann 的 CMake 会调 find_package(Boost)它的多线程和文件系统模块得先编好VTK 依赖 Qt 5 的 Gui、Widgets、OpenGLPCL 本体最后编。我的推荐顺序顺序依赖库版本建议编译方式预计耗时4线程1eigen3.4.0header-only cmake install10 分钟2boost1.82.0bootstrap b240-60 分钟3flann1.9.2cmake10 分钟4qhull8.0.2cmake5 分钟5VTK9.2.6cmake40-50 分钟裁剪后6PCL1.14.0cmake30-50 分钟裁剪后这里把 eigen 排第一不是因为它要编译而是 PCL 的 find_package(Eigen3) 需要它的 cmake 配置文件已经安装把 boost 排第二是因为 flann 和 PCL 都要链接它。注意表格里 VTK 和 PCL 的耗时都标注了“裁剪”这个坑后面专门讲——全模块编译不是不能过是时间成本完全不合理。一提到手动编 PCL大家第一个反弹是 vcpkg 一条命令装完。vcpkg 确实能编出 MinGW 版本但装下来的库版本组合是 vcpkg 定的Qt 版本兼容性不好控制triplet 固定为 x64-mingw 时经常和 Qt 自带的 MinGW 8.1.0 对不上。我这边用 vcpkg 试过两次都卡在 VTK 的 Qt 组件上最后退回手动流程。手动编译看着苦但每一步的产物、版本、路径都是自己可控的出了问题也容易定位。3. eigen 与 boost一个不用编译一个必须先编译3.1 eigenheader-only 库也要走一遍 cmake installeigen 是个头文件库真正的 Eigen 头文件和少量 cmake 配置文件。有人图省事直接 include 源码目录结果 PCL 配置时死活找不到 Eigen3_DIR。正确做法是在源码目录里跑一次安装把 cmake 配置文件“登记”到统一前缀下cd D:/dev/build/eigen-build cmake -G MinGW Makefiles -DCMAKE_INSTALL_PREFIXD:/dev/pcl-deps/eigen -DCMAKE_BUILD_TYPERelease D:/dev/src/eigen-3.4.0 cmake --build . --target install第一段是配置第二段是安装。这里不需要先 build 再 installtarget install 会自动把 Eigen 头文件和 Eigen3Config.cmake 拷到 D:/dev/pcl-deps/eigen。编译阶段什么都不生成所以耗时基本可以忽略。CMAKE_INSTALL_PREFIX 指定安装根目录CMAKE_BUILD_TYPE 对 header-only 库没有实际影响但写上 Release 能让后面依赖 CMake 的链接行为更可预期。验证安装是否成功看两个文件dir D:\dev\pcl-deps\eigen\include\eigen3 dir D:\dev\pcl-deps\eigen\share\eigen3\cmake只要 Eigen3Config.cmake 存在PCL 的配置阶段就能通过 find_package(Eigen3) 找到版本号。我在这里吃过一次亏跳过 cmake install、直接让 PCL 指向源码的 includeCMake 确实能找到头文件但版本号读不出来最后只能回头补一次 install。3.2 boostbootstrap.bat 与 b2 的三个必调参数boost 是这批依赖里唯一不用 CMake 的。在 D:/dev/src/boost_1_82_0 目录下先运行 bootstrap.bat 生成 b2.exe然后执行编译。它叫 b2传统上叫 bjam参数大同小异。下面这行是经过五轮验证的“最小有效配置”bootstrap.bat gcc .\b2 toolsetgcc address-model64 --build-typecomplete --with-filesystem --with-thread --with-date_time --with-system --with-chrono --with-atomic --with-regex install --prefixD:/dev/pcl-deps/boost -j 4toolsetgcc 是这行命令里最重要的参数。bootstrap 默认可能生成 msvc 工具链的描述文件不写 toolsetgcc编译出来的库文件名会变成 libboost_filesystem-vc143-mt-x64-1_82.lib——这是 MSVC 命名规则MinGW 的链接器根本不认。写成 gcc 后库名是 libboost_filesystem-mgw*-mt-x64-1_82.aPCL 才能正常引用。address-model64 对应 64 位 Qt--with- 后面的模块是 PCL 实际要用到的filesystem、thread、system、date_time、chrono、atomic、regex其余模块像 python、graph 不编能省大约三分之一时间。--build-typecomplete 会构建静态库和动态库两种MinGW 下 PCL 官方用的是动态库但编全一点后面调整链接方式时不用回头重编。-j 4 是并行度按物理核数给8 核可以 -j 8注意别用超线程数容易把机器卡死。boost 库安装检测有两个土办法。第一是看安装目录下 include/boost/version.hpp 里的 BOOST_LIB_VERSION第二是写一个 5 行的链接测试#include boost/version.hpp #include iostream int main() { std::cout BOOST_LIB_VERSION std::endl; return 0; }用 g 编一下能过说明头文件和库路径都没问题。别小看这一步后面 flann 配置阶段但凡报 “Boost not found” 或 “found but not compatible”基本都是 boost 编成了 MSVC 格式。3.3 静态库还是动态库MinGW 下的选择逻辑PCL 的 find_package 默认优先找动态库也就是带 .dll 的导入库 .dll.a。boost 的 b2 install 默认把动态库装进 lib 目录如果你偏偏只编了静态库PCL 配置时可能报“Boost found but version mismatch”或者链接时出现一堆“undefined reference”。我建议第一遍统一走动态库Windows 下部署也简单exe 旁白放 dll 就行。等你想把程序拷到没装 Qt 的机器上再单独编一套静态库也不迟。4. flann、qhull、VTK 与 PCL 本体四个 CMake 工程的配置与裁剪4.1 flann关掉三种语言绑定让 CMake 只找到 boostflann 1.9.2 是官方最后的 release 版本。它的 CMake 有点啰嗦默认会去找 Matlab、Python、C# 的绑定目标还会尝试找 HDF5在 MinGW 环境里这些通常缺失或版本不匹配不改开关几乎必然 configure 失败。我的固定配置cd D:/dev/build/flann-build cmake -G MinGW Makefiles -DCMAKE_INSTALL_PREFIXD:/dev/pcl-deps/flann -DCMAKE_BUILD_TYPERelease -DBUILD_MATLAB_BINDINGSOFF -DBUILD_PYTHON_BINDINGSOFF -DBUILD_C_BINDINGSOFF -DBUILD_TESTSOFF -DBUILD_EXAMPLESOFF -DBUILD_DOCOFF -DCMAKE_PREFIX_PATHD:/dev/pcl-deps/boost D:/dev/src/flann-1.9.2 cmake --build . --target install -j 4-DBUILD_MATLAB_BINDINGSOFF 等四个选项把不相关绑定全部关掉省去一大串依赖探测CMAKE_PREFIX_PATH 指向 boost 安装目录flann 的 find_package(Boost) 才会命中第 3 章编好的那套库。configure 完后注意看输出里的Found Boost确认版本是 1.82.0 而不是系统里另一个 msvc 版本的 boost。flann 编译产物在 install 目录下有两个分层include/flann 是头文件lib/libflann.dll.a 和 libflann.dll 是导入库和运行库。PCL 在配置阶段要同时用到 flann 的头文件、库文件和版本宏所以 CMAKE_INSTALL_PREFIX 一定不能省。4.2 qhull三分钟编完但默认库名容易被 PCL 认成“缺组件”qhull 是这批依赖里最轻的CMake 扫一眼就能过但有个隐蔽的坑默认编译只生成 libqhullstatic.a 和 qhull.dll如果你打开的是 BUILD_STATIC_LIBS 选项PCL 的 find_package(Qhull) 只会找动态库名。为了少折腾我一般打开编译全部组件的开关顺带设置位置无关代码cd D:/dev/build/qhull-build cmake -G MinGW Makefiles -DCMAKE_INSTALL_PREFIXD:/dev/pcl-deps/qhull -DCMAKE_BUILD_TYPERelease -DCMAKE_POSITION_INDEPENDENT_CODEON -DQHULL_COMPILEALLON D:/dev/src/qhull-2020.2 cmake --build . --target install -j 4CMAKE_POSITION_INDEPENDENT_CODEON 是给静态库加 -fPIC虽然 Windows/PE 下通常不需要但 PCL 某些组件的 CMake 会按“可 PIC 静态库”来假设打开它能避免 configure 阶段的告警。-DQHULL_COMPILEALLON 让 qhull 生成 libqhull_r、libqhullcpp、libqhullstatic 等全部目标PCL 只需要 libqhull_r 和 libqhull但全开之后更不容易遇到 “Qhull not found” 的假报错。4.3 VTK唯一需要 1 小时量级的依赖用模块裁剪控制时间VTK 是这批依赖里的大头也是让 configure 输出直接决定 PCL 带不带可视化模块的关键。版本选 9.2.6它对 PCL 1.14 的 Qt 组件兼容性最好。默认 CMake 会开启两三百个模块对点云工具来说大多数用不上。我一般显式关掉全模块只开 Rendering、Imaging、Views、Qt 这四组cd D:/dev/build/vtk-build cmake -G MinGW Makefiles -DCMAKE_INSTALL_PREFIXD:/dev/pcl-deps/vtk -DCMAKE_BUILD_TYPERelease -DVTK_BUILD_ALL_MODULESOFF -DVTK_GROUP_ENABLE_RenderingON -DVTK_GROUP_ENABLE_ImagingON -DVTK_GROUP_ENABLE_ViewsON -DVTK_GROUP_ENABLE_QtON -DVTK_QT_VERSION5 -DQT_QMAKE_EXECUTABLEC:/Qt/Qt5.15.2/5.15.2/mingw81_64/bin/qmake.exe -DCMAKE_PREFIX_PATHC:/Qt/Qt5.15.2/5.15.2/mingw81_64 D:/dev/src/VTK-9.2.6 cmake --build . --target install -j 4DVTK_GROUP_ENABLE_QtON 是 PCL Visualizer 嵌入 Qt 窗口的关键。VTK 9.2 默认按 Qt5 构建-DVTK_QT_VERSION5 再强调一次-DQT_QMAKE_EXECUTABLE 直接指向 Qt 安装目录里的 qmake避免 CMake 到系统 PATH 里抓到其它 Qt 版本。VTK_BUILD_ALL_MODULESOFF 配上四组 GROUP_ENABLE大概能把编译时间从 3 小时压到 40 分钟模块数量从 300 压到 150 以内。如果后续遇到某些渲染功能缺失再回来开对应的 Module_ 具体开关。到这里PCL 的五个前置依赖全部落位。VTK 的 configure 阶段如果看到大量 warning不用慌只要最终生成了 VTKConfig.cmake 就是成功。我经常用一句话判断这个库编没编好到 install 目录的 lib 文件夹里找 vtkCommonCore-9.2.dll 和 vtkRenderingQt-9.2.dll两个都在说明核心和 Qt 渲染模块都齐了。4.4 PCL 本体七个 WITH 开关与 target 白名单PCL 源码解压后在 D:/dev/build/pcl-build 目录执行配置。PCL 的 CMake 会把所有依赖一次性检测完所以 CMAKE_PREFIX_PATH 必须把第 2 到第 4 章的安装前缀全部列进去分号分隔cmake -G MinGW Makefiles -DCMAKE_INSTALL_PREFIXD:/dev/pcl-deps/pcl -DCMAKE_BUILD_TYPERelease -DWITH_VTKON -DWITH_BOOSTON -DWITH_FLANNON -DWITH_QHULLON -DWITH_OPENNIOFF -DWITH_OPENNI2OFF -DWITH_ENSENSOOFF -DWITH_DAVIDSDKOFF -DWITH_DOCSOFF -DWITH_TESTSOFF -DPCL_BUILD_WITH_QTON -DPCL_QT_VERSION5 -DCMAKE_PREFIX_PATHD:/dev/pcl-deps/eigen;D:/dev/pcl-deps/boost;D:/dev/pcl-deps/flann;D:/dev/pcl-deps/qhull;D:/dev/pcl-deps/vtk;C:/Qt/Qt5.15.2/5.15.2/mingw81_64 D:/dev/src/pcl-pcl-1.14.0把 WITH_OPENNI、WITH_OPENNI2、WITH_ENSENSO、WITH_DAVIDSDK 全关掉。这几个是深度摄像头和体感设备的驱动接口没有硬件时 CMake 会去找对应 dll找不到就报错还连累整个 configure。保持 OFF 即可后续要用再单独开。PCL_BUILD_WITH_QTON 和 PCL_QT_VERSION5 决定 PCL Visualizer 能不能内嵌到 Qt 窗口里如果你下的 PCL 版本不认 PCL_BUILD_WITH_QT 这个开关换成 WITH_QTON 是同一个意思。配置成功后输出里的关键行大致是The following subsystems will be built: common, kdtree, octree, search, sample_consensus, filters, io, keypoints, registration, segmentation, features, visualization如果 visualization 不在列表里回到上一行看 VTK 是否真的被找到。PCL 编译最费时间的两个子系统是 io 和 visualization。直接 cmake --build . 会编全部子系统耗时可观。我一般先跑一遍cmake --build . --target help列出所有可用 target然后只编自己需要的cmake --build . --target pcl_common pcl_kdtree pcl_search pcl_io pcl_filters pcl_visualization pcl_segmentation -j 4pcl_visualization 依赖前面几乎全部模块编完它就等于把渲染链路验证通了。如果想做个最简单的可视化pcl_common、pcl_io、pcl_filters、pcl_visualization 四个 target 就够。target 白名单的好处不止省时间还能让安装目录只长成你应该使用的样子不会塞一堆用不上的 .dll。5. 避坑MinGW 编译 PCL 及其依赖的常见问题与排查5.1 配置阶段报 cannot mix incompatible Qt library (version ex50601) with this library现象编译任何带 Qt 的依赖VTK 或 PCL时出现类似fatal: cannot mix incompatible Qt library (version ex50601) with this library的报错。原因你编译的库用的 Qt 头文件来自 A 版本而链接时 PATH 里的 qwindows.dll 来自 B 版本。ex50601 表示 Qt 5.6.1通常是系统 PATH 里混入了另一个 Qt 目录或者 Qt 安装时勾了多个套件MinGW 链接器把另一套 Qt 库的头文件信息抓进来。这种情况在“装了 Qt 5.12又装了 Qt 5.15”的机器上高频发生。解决打开系统的环境变量把 PATH 里和当前 Qt 无关的 Qt 目录全部删掉只保留 C:\Qt\Qt5.15.2\5.15.2\mingw81_64\bin 和 C:\Qt\Qt5.15.2\Tools\mingw810_64\bin两块缺一不可。之后跑一次 qmake --version确认输出的是同一个 Qt 5.15.2再回来重新 configure。5.2 链接时 cannot find -lqhull甚至 cannot find -lpublic——库文件命名与导入库路径问题现象PCL 或 VTK 编译到最后一步链接时报cannot find -lqhull、cannot find -lpublic这类“找不到 xxx 库”的错误。“-lpublic”这种名字看着很像某个工程里自定义的库本质和 qhull 一样链接器按 -l 参数去找对应的 .a 文件找不到就报。原因两条。一是 CMAKE_INSTALL_PREFIX 没被正确传进链接器参数二是某些第三方库用 MSVC 命名规范生成 lib比如 qhull.libMinGW 的链接器只认 libqhull.a 或 libqhull.dll.a名字对不上就直接报 cannot find。解决检查对应库的 install 目录下 lib 文件夹里有没有 .a 或 .dll.a 结尾的导入库。没有就回到那个库的 CMake 配置里加-DCMAKE_SHARED_LINKER_FLAGS-Wl,--out-implib,libqhull.dll.a强制导出或者干脆重新编译一遍该库不用 Static 选项。PCL 的 CMake 对 qhull 的查找认不得自定义路径时手动把 D:/dev/pcl-deps/qhull/lib 写进 CMAKE_PREFIX_PATH再跑一次 configure。5.3 boost 编出 msvc 格式的库——工具链参数缺失的表现现象PCL 配置阶段报Could NOT find Boost (missing: Boost_DIR)或者找到了 boost但链接时报版本不兼容。原因b2 的 toolset 参数写成了 msvc或者根本没写。前一种情况会生成 libboost_filesystem-vc143-mt-x64-1_82.lib后一种情况 b2 会自动探测到 cl.exe生成同样的 MSVC 命名。无论哪一种在 MinGW 的链接器眼里都是“文件不存在”。解决删掉 boost 源码目录下的 bin.v2 缓存回到源码根目录重新跑一遍bootstrap.bat gcc再跑带 toolsetgcc 的 b2 命令。验证方法还是第 3 章那个土办法看 lib 目录下有没有 libboost_filesystem-mgw*-mt-x64-1_82.a文件名中间带 mgw 才是 MinGW 版本。5.4 VTK 版本过新导致 QVTKWidget 消失——Visualizer 组件的兼容性上限现象VTK 编的是 9.3.xPCL configure 时显示 VTK found但编译 pcl_visualization 时报找不到 QVTKWidget或者运行时点云窗口一片黑、程序闪退。原因VTK 9.3 把 Qt5 的老 QVTKWidget 组件移除改用 QVTKOpenGLNativeWidget。PCL 1.14 的 vtk_visualizer 依赖老接口需要 QVTKWidgetPlugin 才能内嵌到 Qt 窗口里新 VTK 没有它。解决要么锁定 VTK 9.2.6 编译别追最新要么升级 PCL 到最新 master 分支但那个分支的 CMake 还在迭代未必稳。我给团队的建议永远是前者版本对齐比“版本最新”重要得多。同一个道理适用于 Qt——用 Qt 6 再走一遍这套流程VTK 和 PCL 的坑只会更多。6. 验证与部署用 30 行代码确认整套 MinGW 编译链路能用6.1 部署 dllPATH 顺序与 Qt 平台插件路径安装完成不是终点。PCL 编译出的多个动态库分散在 D:/dev/pcl-deps/pcl/binVTK、boost、flann、qhull 的 dll 也各自在对应安装目录里。运行验证程序前把下列路径按顺序加入 PATHD:/dev/pcl-deps/pcl/bin D:/dev/pcl-deps/vtk/bin D:/dev/pcl-deps/flann/bin D:/dev/pcl-deps/qhull/bin C:/Qt/Qt5.15.2/5.15.2/mingw81_64/bin C:/Qt/Qt5.15.2/5.15.2/mingw81_64/plugins/platforms最后一条是 Qt 的平台插件目录。缺少它时程序会直接闪退或报qt.qpa.plugin: could not find the qt platform plugin windows。有同事在嵌入式板子上见过could not find the qt platform plugin linuxfb和这个就是同一类问题——插件目录不在搜索路径里。Windows 下更稳的做法是把 plugins 整个放到 exe 旁边用 QT_QPA_PLATFORM_PLUGIN_PATH 指向它。6.2 CMake 构建最小验证程序写一个 30 行的验证程序读取一个 pcd 文件并在 PCLVisualizer 里显示#include pcl/point_types.h #include pcl/point_cloud.h #include pcl/io/pcd_io.h #include pcl/visualization/pcl_visualizer.h #include iostream int main(int argc, char** argv) { if (argc 2) { std::cerr usage: argv[0] pointcloud.pcd std::endl; return 1; } pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ); if (pcl::io::loadPCDFilepcl::PointXYZ(argv[1], *cloud) -1) { std::cerr cannot load pcd std::endl; return 1; } pcl::visualization::PCLVisualizer viewer(PCL MinGW Test); viewer.addPointCloudpcl::PointXYZ(cloud, cloud); while (!viewer.wasStopped()) { viewer.spinOnce(100); } return 0; }用 CMake 而不是手写 g是因为 PCLConfig.cmake 会自动带出 VTK 和 boost 的全部链接路径省事得多cmake_minimum_required(VERSION 3.16) project(pcl_view_demo) set(CMAKE_PREFIX_PATH D:/dev/pcl-deps/pcl;D:/dev/pcl-deps/vtk;C:/Qt/Qt5.15.2/5.15.2/mingw81_64) find_package(PCL 1.14 REQUIRED COMPONENTS common io visualization) add_executable(view view.cpp) target_link_libraries(view ${PCL_LIBRARIES}) target_include_directories(view PRIVATE ${PCL_INCLUDE_DIRS})配置、编译、跑起来能弹出窗口、旋转点云这一步就算真的走通了。我第一次走完整套流程花了一整天现在重跑一遍大概两个多小时省下的时间主要是版本对齐——每次先确认 PATH再确认每个依赖的版本号最后才动手编译。这套顺序和参数我都写进了团队内部手册照着走基本不会翻车。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。