最近需要将自己做的算法以插件的形式集成在CloudCompare上,因此涉及到对CC的编译。这里就将完整过程进行记录。笔者是在windows平台使用,编译环境为:win7 64位系统 VS2013、PCL1.8 X64和X86 、Qt 5.6,因为要编译32位和64位的软件,故所有库都具有32和64两种类型。
CC的官网:http://www.cloudcompare.org/
CC在Github:https://github.com/cloudcompare/cloudcompare
CC的编译:https://github.com/CloudCompare/CloudCompare/blob/master/BUILD.md
上面就是最重要的3个网站,从这里可以找到所有和编译相关的信息。博客中大部分内容直接翻译自上述3个网站中内容。
CloudCompare是一个三维点云(和三角网格)处理软件。 它最初设计用于比较两个三维点云(例如用激光扫描仪获得的点云)之间或点云与三角网格之间的比较。 这也是为什么叫做CloudCompare了。CC支持海量点云显示与加载,这也是我选择将自己的算法集成在CC上的一个重要原因。
因为写这篇博客前,我已经编译了64位版本的CC,这里例子是编译32位的CC,过程都是一样的,不用纠结。
(1)打开CMake GUI
Where is the source code:D:/CC/trunk 这是CC的源代码路径,你下载的CC名字不叫做trunk,这里是我自己改的。
Where is build the binaries:D:/CC/buildX86 这是的路径是生成VS工程的路径
(2)Configure
等待CMake调试完成,提示错误。
设置 QT5_ROOT_PATH变量,例如:C:\Qt\Qt5.6.0X86\5.6\msvc2013
再次Configure,直到出现Configuring done。
(3)Generate
在Generate之前,你可以选择一些普通选项,丰富CC的功能,如果不需要这些功能大可以不必选择,因为选择的越多出现的问题越多!
OPTION_BUILD_CC_VIEWER: whether or not to build the ccViewer side project (ON by default)
OPTION_SUPPORT_MAC_PDMS_FORMAT:$ to add support for PDMS .mac scripts (CAD format)
OPTION_USE_DXFLIB: to add support for DXF files in CloudCompare/ccViewer with dxflib - see below
OPTION_USE_FBX_SDK: to add support for FBX files in CloudCompare/ccViewer with the official FBX SDK - see below
OPTION_USE_GDAL: to add support for a lot of raster files in CloudCompare/ccViewer with GDAL libray - see below
OPTION_USE_LIBE57: to add support for E57 files in CloudCompare/ccViewer with libE57 - see below
OPTION_USE_LIBLAS: to add support for LAS files in CloudCompare/ccViewer with libLAS - see below
OPTION_USE_SHAPE_LIB:to add support for SHP files in CloudCompare/ccViewer
仅windows平台可进行的选择
OPTION_MP_BUILD: for Visual Studio only (multi-process build –> much faster but uses a lot of CPU power)这个可以加快构建速度,我果断选择了此项
OPTION_SUPPORT_3D_CONNEXION_DEVICES: for 3D mouses handling
OPTION_USE_OCULUS_SDK: to add support for the Oculus Rift SDK in CloudCompare/ccViewer (work in progress)
OPTION_USE_VISUAL_LEAK_DETECTOR: to use the Visual Leak Detector library for MSVC (http://vld.codeplex.com/)
在Generate前,这里只选择了 OPTIONMPBUILD ,其他的都默认,例如liblas库和PCL我目前还用不到,所以暂时不添加。
Generating done出现后,说明离成功更近一步了,虽然出现很多警告不用管。
(4)Open Project
到这里就不要开心的太早了,因为马上就会出现错误。而且是很有趣的错误。
经过几分钟的忐忑煎熬,错误如期而至。我错了,原来只有X64的工程会出现那个错误,X86竟然一次编译通过。出于认真负责的态度,我还是把X64遇到的错误以及解决方法贴出来,已帮助更多的人。
X64编译时遇到错误
中文版错误
error C2440: “初始化”: 无法从“initializer-list”转换为“QList”
Error LNK1104:不能打开文件 '...\libs\qcc_io\Debug\QCC_IO_LIBd.lib'
英文版错误
Error C2440:'initializing': cannot convert from initializer list to QList in AsciiOpenDlg.cpp
And
Error LNK1104:cannot open file '...\libs\qcc_io\Debug\QCC_IO_LIBd.lib'
解决方法,定位错误,修改错误代码:
//const QList separators{ QChar(' '),
// QChar('\t'),
// QChar(','),
// QChar(';'),
};
const QList separators = QList() << QChar(' ') << QChar('\t') << QChar(',') << QChar(';');
出现下面这个就说明你已经编译成功了,开始享受成果吧。
(5)测试
打开
D:\CC\buildX86\qCC\Release或者D:\CC\buildX86\qCC\Debug下的CC软件。
到这里你肯定还是会遇到不少问题,不过我相信对你来说已经不是任何问题。
突然发现CC好像比以前更好编译了,也许是我选择的附加功能少的缘故。下次将会测试自己的插件,敬请期待。