CMAKE构建 QT5 CC PCL 点云相关

缘起:公司项目开发需要.同时因为CC本身的UI相关是基于QT开发所以需要QT.

一、基本依赖关系整理:

1.CC(CloudCompare)《---PCD格式需要依赖PCL

2.PCL(针对点云相关处理的算法库)《----依赖boost、flann、eign3、vtk、openni、qhull

3.pcl核心的依赖库:

Eigen3(线性代数,矩阵运算 基础库)、

boost(可移植提供源码C++库,标准库的后备)、

VTK(开源的计算机图形学图像处理和可视化库-视图、渲染等)

当然最主要的一项依赖,这些3D方面的开发都是需要基于openGL的开发。

二、环境:

win10 pro 专业版   VS2019  QT 5.12.2

三、CMAKE构建

主要编译流程参考:https://blog.csdn.net/qq_57868068/article/details/129619502

*注意点:
1.vs2019 与 QT5 安装时候需要把 msvc 、 opengl 等安装环境等支持勾选上
参考:
https://blog.csdn.net/yao_hou/article/details/108015209
https://mingshiqiang.blog.csdn.net/article/details/108015209

2.注意CC版本。
笔者一上来下载了最新的版本之后,遇到问题频出,不过基本也都是QT5路径相关的问题,好不容易CMake过了,在最终vs2019生成这一关卡住了提示缺少一个ki 开头的头文件...
估计也是存在兼容问题可能最新版本需要vs2022编译
最终还是换回了v2.11.0的版本,遇到的问题也是和链接中的问题一摸一样

C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Widgets
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5PrintSupport
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Concurrent
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5OpenGL
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5OpenGLExtensions
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Svg
C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5LinguistTools


3.cmake版本貌似没讲究
笔者使用的比较新的 3.27 版本。

4.PCL 以上的主要编译流程中人家已经做过测试就不再重复踩坑了。
但是实际测试的时候还是各种踩坑,只是缩小了踩坑范围。
注意环境变量不要忘记添加---(*可能不是必须,因为后来解决其他相关问题时看了CMAKE相关构建文件中,会检测PCL是否ALLINONE版本,如果是会基于检测的ALLINONE版本的pcl环境变量来找到对应根目录来依据目录结构进行剩下的三方依赖库)
%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\Boost
%PCL_ROOT%\3rdParty\Boost\lib
%PCL_ROOT%\3rdParty\Boost\include
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools

1.9.1版本,git 上的all in one 版本是vs2017版本的,本着对方已经测试过可以的结论还是拿这个版本试一下,
万万没想到直接中坑,报的Eigen3 这个线性代数矩阵运算库的问题,重新git下了一个同版本的,cmake构建编译生成替换了一下还是不行。
不知道是不是环境问题,估摸着应该还是vs2017版本和我VS2019版本不匹配。
主流程博文中已经测试过1.12版本的是不行的,所以就直接换个2019的。

所以就先试了一下 1.11.1版本,小有进展,过了Eigen3,但是直接报了boost 方面的错误,
而且还是网上搜索不到答案的问题,

只能自己琢磨了,关键cmake报错提示比较少,然后搜索了一下对应开启DEBUG输出方式,

链接:CC集成PCL时候cmke报错时候 调试开关开启---https://blog.csdn.net/qq_35942419/article/details/124243583
开启对应模块的DEBUG调试输出信息后就方便很多,一看原因对症下药即可,

只是对于cmake的位数检测不是很明白:

在CMAKE构建的时候config之初已经指定了需要构建的是64位的了。
实际为什么是通过CMKE中空指针的字节大小来判断是32和64位的

(32位 4字节,64位 8字节,)理论上来说没错,但是实机检测出来是错的,我这明明64 他给我检测的是32位导致找不到这些相关库了。


修改下CMAKE 强制指定64位终于顺利通过(上图else 处原本32直接改成了64),

config donce了


不过在vs2019中生成的时候又出现了问题,在pcl 中 boost 相关的自定义数据结构无法引用进来,缺少头文件,关键是明明都在cmake时候通过了呀!!


我TM.....实在无语,想想索性还有最后一个版本可以试一下,

PCL 1.10.1 一路CMAKE下来与1.11.1遇到的问题相同直接在一顿操作后构建成功。
然后VS2019编译生成,终于不再报错,成功生成。

终于,最终生成后也看到了PCD的文件格式了了。

一些其他的参考:

实际上,在笔者的本次构建中并没有出现VTK的问题。推测并不需要,但也做记录防止遗忘

PCL1.10.1 安装 以及 VTK 8.2 cmake 编译
https://www.jianshu.com/p/142fbb1f0b9c

四、项目工程构建

如上所说,CC的UI 相关是 QT 的,所以采用了QT 的widget 方式创建了自己项目的工程
QT自带项目构建工具qmake不过对于跨平台而言都是使用cmake的
所以直接挑战下有点难度的采用camke构建项目,
也不知道当初谁给的勇气,可把自己折腾坏了。
不过好说,总算是把整个项目给搭出来并集成了CC!


同时也是把时间花费在了对CC不需要的部分和模块进行精简剔除上

好了接下来就是进一步的深入了解与完善了。

这个给折腾的也算是让自己对CMAKE有了更深的了解

基础CMake常用及基础语法参考
project 命令说明https://blog.csdn.net/fengbingchun/article/details/127598056

message("project name: ${PROJECT_NAME}") 

include_directories命令用于在构建(build)中添加包含目录https://blog.csdn.net/fengbingchun/article/details/128053704

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值