主要参考:CloudCompare:VS2017 + Qt5.9 + CMake3.14 编译CloudCompare2.10.2_累了就要打游戏的博客-CSDN博客
使用cmake和vs编译cloudcompare教程_zeeq_的博客-CSDN博客_cmake vs教程
经常做点云处理的同学应该都接触过CloudCompare这款开源软件,自身的点云处理功能很强大,也公开源码允许使用者进行二次开发添加自己的功能模块。
关于CC编译的参考文档不算多,很多写的挺全的,但是自己参考进行编译的时候也还是会经常报错,所以就把自己的编译过程记录了一下。步骤不少,不记下来隔天就忘记了。
PS:这个版本号不是严格对应的,这只是我刚好测试成功的一组。具体版本号对应的玄学我也不是很懂。
相关包的版本:
一、安装VS2017
按理说这个没必要写的。但如果有这样一个错误 “缺少windows 8.1 SDK” 在cmake编译阶段报出来,那就是在vs的安装环节出了问题。(所以还是简单提一下)
红色框内的都勾上
!!然后记得勾上【Windows 8.1 SDK和UCRT SDK】
二、安装QT5.9.8
QT的安装完全参照Qt:Win10 + VS2017 配置 Qt5.9.8_累了就要打游戏的博客-CSDN博客
qt5.9.8安装包,参考博客里提供的镜像源或是官网都找不到了,我的好像是在GitHub找到的。
按照教程安装qt,过程很简单,图就没截(见教程:三、安装Qt5.9.8)。安装完得到如下文件:
安装完后,添加系统环境变量。把qt安装文件下的bin文件路径添加到系统路径下面。具体的路径根据每一个人存放位置不同,找到bin文件复制一下路径很快的。
到这里,qt的部分就结束了。
三、安装cmake3.15.4
参考的案例版本很古早,官网已经更新到3.2x了,找不到。直接百度找到一个3.14.x版的,但是是一个msi后缀的文件,查了一下确实win下有两种:zip和msi,zip解压可以直接用,msi还要安装,所以放弃.msi。
直接解压安装包,下面是解压后有的文件:
后面编译文件要用的话,就双击下面这个
四、下载CC源码
去cloudcompare的官网下载源码:CloudCompare - Open Source project
跳转页面,选择需要版本的压缩包,下载下来。我下的是v2.11.3.zip
解压压缩包,可以找到三个插件模板文件夹,路径见下图。
ExamplePlugin文件夹下面有这么些文件,和我找的教程里内容一样(应该是没什么问题
五、编译一次cc源码
cc编译的环境都搭建好了之后,先对下载下来的cc源码按照教程编译一次。
参考:使用cmake和vs编译cloudcompare教程_zeeq_的博客-CSDN博客_cmake vs教程
整个编译过程完全按照上面的教程来,基本ok。遇到的cmake编译错误的情况有:
①缺少windows 8.1 SDK;②找不到xxx.dll文件;反正这两个问题如果前期把vs好好勾选对了就不会碰到。
首先打开cmake的执行文件,下面这样:
选择文件。【where is the source code】这一栏自己浏览路径,找到下载好的cc源码所在的文件夹。根据教程提醒:需要注意一下,解压文件夹的时候通常会在文件夹外面多套了一层名字与压缩包名字一样的文件夹,所以需要确认一下,这里的路径应该是直接包含了所有cc源码文件的文件夹;【where to build the binaries】这一栏是用来指定编译后生成文件的放置路径,具体放哪自己随意;我放在了cc源码的同级目录里,命名为build。
选择好文件夹路径之后,点击下面的【configure】,会弹出对话框让你选择编译器,还有位数。根据vs的版本,这里选择vs2017,然后位数是x64。(cmake编译错误有一次出在这里:忘记选择x64了,然后它就默认是win32。导致我cmake编译没出问题但是vs编译报错很多,最后不得不删掉所有编译好的文件从头再来,所幸不是太麻烦)
然后下面就一片红色的选项,像这样。(这不是报错)
接着根据参考教程,把qt的安装路径加上,我跟着教程把路径具体到了【D:\03-QT\5.9.8\msvc2017_64】
然后选择了一下CMAKE_INSTALL_PREFIX的路径,这个也是随自己放,但是建议放在cc源码附近(如同级目录),后面找起来会方便很多。我这里在cc源码同级目录里新建了一个文件夹,命名为prefix。
然后就点击【configure】再次编译了,最后点击【generate】生成。生成过程很快,结束之后就可以去build文件里面找到cloudcompare.sln文件,用vs打开。
选择解决方案配置release x64;右键ALL_BUILD,选择生成,这个过程要等很久,前面的步骤没问题的话就没看到报错;右键INSTALL,选择生成,这个过程很快,我每次生成都会有一个错误,但是目前不知道具体影响,所以就暂时忽略了。
两个都生成完之后,就去之前的prefix文件里找到cloudcompare文件夹。里面有一个cloudcompare.exe的执行文件,双击就可以看到cc编译好的界面。(看着好像和正式发现的cc一样,但其实里面基本没什么功能)
六、编译myPlugin插件
编译了一次之后,就可以开始加入自己的插件了。
最初参考:cloudcompare插件编写教程_zeeq_的博客-CSDN博客_cloudcompare插件开发
这个参考我觉得写的挺好的,也和我找到一些其他参考差不多,但是一遍照做下来,在cmake编译的环节虽然不报错,但是却找不到自己添加的myPlugin,不知道为什么,困扰好久。最后又尝试找新的教程,其实差不多,只是放置myplugin的位置变动了。
后续参考:CC插件开发——标准插件的创建流程_萘和的博客-CSDN博客_cc开发
按照这个教程,cmake在编译的时候能找到myPlugin。再结合上面插件编写教程结尾部分的指导。
在解压的cc源码里找到示例插件,复制一份到标准插件中,命名随意,我这里改成了myPlugin。然后在myPlugin同级目录里面的CMakeLists.txt,添加一句话(如图所示);
接着点进myPlugin文件夹里面,先把这些文件名字改一下,原来是ExamplePlugin的改成myPlugin;
image文件夹下放的是插件的图标,可以换成自己的图标。(我没改,我不敢乱改哈哈哈哈哈)
除了最外面可以直接看到的文件名需要改过来,文件本身的内容有的也需要修改。
CMakeLists.txt的修改前:
修改后:
Info.json内容,只改动了name和icon,其他的信息没敢乱动。
myPlugin.cpp文件直接用记事本打开,用替换功能,把ExamplePlugin全部替换成myPlugin;
myPlugin.h文件也直接用记事本打开,用替换功能,把ExamplePlugin全部替换成myPlugin;然后找到第49行改动一下(蓝色部分原为example,应改为myPlugin)。参考教程里面说这是插件的唯一标识。
myPlugin.qrc文件也用记事本打开,把ExamplePlugin改成myPlugin(红线部分)
到这里就全部改完了。然后打开cmake,开始编译。选好文件路径,点击configure。出现大片红色的项目,找到PLUGIN_STANDAERD_myPlugin,勾选上,再次点击configure,最后点击generate。
直接点击【open projects】,会帮你自动打开cloudcompare.sln文件,vs加载如下:
这次多了自己增加的插件myPlugin
插件功能实现的地方:
修改过代码之后。修改配置环境为【release x64】,右键单击【解决方案】,选择【批生成】。弹出对话框,点击【全选】。(和参考教程显示的内容不太一样,我也不知道为什么,也没管就按步骤接着做了)然后右键单击【ALL_BUILD】,选择生成,等待漫长的编译过程。
然后找到指定的prefix文件下的cloudcompare文件夹,里面有cc的可执行文件,双击运行该exe文件。
到这里,基本的插件编译环境就搞好了,有一些瑕疵 ,以后知道问题出在哪了,会继续补充。