CloudCompare是一款优秀的开源软件,用于处理三维点云。有很多介绍基于其进行二次开发的文章,但是没有介绍其中的一些插件应用和详细功能,从这篇文章我会从搭建环境开始,逐步分享我在这方面的一些经验,包括一些实用案例。
准备工作:本教程默认已经装了visualstudio2022。
1 基于vcpkg编译Qt5和pcl库
vcpkg是微软出的一个管理c++第三方库的工具,在windows下非常好用,推荐使用。建议先入门vcpkg再看后面的内容,vcpkg的入门教程网上很多,这里我就不赘述了。
//下载vcpkg源码
git clone git@github.com:microsoft/vcpkg.git
1.1 编译Qt5
Qt5也可以直接从官网上直接下载,我是为了使用vcpkg方便管理整个第三方库,所以在vcpkg里编译Qt5。
输入命令:
vcpkg install qt5:x64-windows
编译过程中可能会出现如下错误:
这是由于找不到qmake.exe路径导致的,解决办法也很简单:
找到下面这个文件,将tool/qt5/bin改为tool/qt5-base/bin保存,重新编译qt5即可成功
1.2 编译pcl库
输入命令,可能需要时间比较长耐心等待即可,中间如果有失败,可能是网络问题,多编译几次。
vcpkg install pcl:x64-windows
2 基于cmake构建CloudCompare工程
2.1 下载cloudcompare源码
git clone git@github.com:CloudCompare/CloudCompare.git
//或者直接clone所有子仓库,后面就不用手动下载子仓库了,但是会导致源码比较大
git clone --recurse-submodules git@github.com:CloudCompare/CloudCompare.git
在cmake选择源码目录和工程目录
点击Configure,在弹出框选择visual studio 17 2022(选择本机安装的对应版本),platform选择x64,开始构建后,会出现找不到qt5-config.cmake的error,如下图。
修改CMakeLists.txt,如下图,设置vcpkg.cmake的路径,保存后重新构建cmake。
#必须放到project之前
set(CMAKE_TOOLCHAIN_FILE "G:/SDK/vcpkg/scripts/buildsystems/vcpkg.cmake")
出现找不到qmake.exe的错误。解决这个错误,我的方法是将tool/qt5-base/bin目录下的qmake.exe复制到tools/qt5/bin和tools/qt5-tools.bin(这个目录也需要复制进来,后面工程编译会需要到,不然会出错)下。
重新Configure,上述错误解决。但是出现qVoxFall插件构建错误,如下图
这是因为该插件源码需要单独下载。
类似需要单独下载的源码还有CCCorLib
,以及CCCoreLib/extern/nanoflann和CloudCompare/libs/CCAppCommon/QDarkStyleSheet
这些源码单独下载完成后,重新Configure,成功。Generate,也成功。
2.2 初步编译遇到的问题
2.2.1 我一般会提前设置下面这俩编译选项
- 取消ccviewer编译选项,一般主工程中会带有ccviewer,所以不需要单独编译
- 打开多线程编译选项,会加快编译速度(单线程,速度提升几倍,或建议打开)
2.2.2 一个编译错误
到此,CloudCompare的visualstudio工程就构建完毕了。点击Open Project按钮,打开visualstudio工程,可以进行编译了。
编译cloudcompare主项目时,会出现一个编译错误,如下图,这是因为vcpkg编译qt5时,没有编译QGamepad组件。
解决办法有两个
- 在vcpkg里安装编译qt5的QGamepad组件
- 但是我暂时用不到该组件,所以另一个解决办法就是去掉该组件的依赖设置,如下图
重新Configure和Generate,编译vs工程,成功。
这次构建工程的教程就到这里,下一篇我会分享编译e57和las读写插件相关的教程。
感性兴趣的朋友可以关注我,后面我会继续分享怎么基于cloudcompare二次开发,做出一些自己想要的点云处理插件功能。