CloudCompare 2.13+ 的编译
1. 基本依赖
CloudCompare 的构建需要 CMake。
CloudCompare 的主要依赖是 Qt。CloudCompare 2.13+ 需要 5.12 <= Qt < 6.0。
- 在 Windows 上建议使用 Qt 官网 的安装程序。
- 在 macOS 上,您也可以使用 Qt 官网的安装程序,或者使用 Homebrew。
- 在 Linux 上,建议使用您的发行版的软件包管理器:
Debian/ubuntu 包名:
libqt5svg5-dev libqt5opengl5-dev qt5-default qttools5-dev qttools5-dev-tools libqt5websockets5-dev
2. 克隆
克隆 CloudCompare 的命令是:
git clone --recursive https://github.com/cloudcompare/CloudCompare.git
--recursive
很重要,因为 CloudCompare 使用 Git 的子模块系统来 ‘嵌入’ 外部库或插件。
3. CMake 配置
当进行 CloudCompare 的基本构建时,唯一需要的 CMake 参数是 CMAKE_PREFIX_PATH
,用于告诉 CMake 在哪里找到您的 Qt 安装。
这只在 Windows 和 macOS 上需要,因为在 Linux 上,Qt 安装在 CMake 将会找到的标准位置上。
您也可以使用 CMAKE_INSTALL_PREFIX
来定制 CloudCompare 将被安装的路径。
如果您使用 CMake-GUI,选项是一样的,您只需在 GUI 中输入值。
示例:
# Windows
mkdir build & cd build
cmake -DCMAKE_PREFIX_PATH=C:\Qt\5.15.2\msvc2019_64 ..
# macOS
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt@5 ..
# Linux
mkdir build && cd build
cmake ..
您可以随时查看 CloudCompare 在 GitHub 的 CI 上是如何构建的。
4. 构建
# 仍在构建文件夹中
cmake --build .
5. 安装
# 仍在构建文件夹中
cmake --install .
可选功能和插件
CloudCompare 有一些可选功能和插件,默认情况下不会构建它们。
下面是这些选项/插件的列表。要向 CMake 添加一个选项,使用 -DMY_OPTION=ON
语法。
例如,要构建 qEDL
插件,请在配置步骤中添加 -DPLUGIN_GL_QEDL=ON
参数。
可选功能包括:
CMake 选项 | 默认值 | 描述 |
---|---|---|
OPTION_BUILD_CCVIEWER | ON | 是否构建 ccViewer 侧项目。 |
OPTION_USE_SHAPE_LIB | ON | 使用 vendored shapelib 为 SHP 文件添加支持。 |
OPTION_USE_DXF_LIB | ON | 使用 vendored dxflib 为 DXF 文件添加支持。 |
OPTION_USE_GDAL | OFF | 在 CloudCompare/ccViewer 中使用 GDAL 库添加对许多栅格文件的支持。 |
以下选项仅适用于 Windows:
CMake 选项 | 默认值 | 描述 |
---|---|---|
OPTION_MP_BUILD | OFF | 仅适用于 Visual Studio (多进程构建 --> 更快,但消耗大量 CPU 资源) |
OPTION_SUPPORT_3D_CONNEXION_DEVICES | OFF | 3D 鼠标处理 |
OPTION_USE_OCULUS_SDK | OFF | 使用 Oculus SDK (LibOVR) 支持构建。 |
OPTION_USE_VISUAL_LEAK_DETECTOR | OFF | 使用 Visual Leak Detector 库进行 MSVC 的内存泄漏检测 (http://vld.codeplex.com/) |
可用的插件有
GL 插件
插件名称 | CMake 选项 | 默认值 | 描述 |
---|---|---|---|
qEDL | PLUGIN_GL_QEDL | OFF | |
qSSAO | PLUGIN_GL_QSSAO | OFF |
IO
插件
插件名称 | CMake 选项 | 默认值 | 描述 |
---|---|---|---|
qAdditionalIO | PLUGIN_IO_QADDITIONAL | OFF | |
qCoreIO | PLUGIN_IO_QCORE | ON | |
qCSVMatrixIO | PLUGIN_IO_QCSV_MATRIX | OFF | 添加对 CSV 矩阵文件的支持。 |
qDraco | PLUGIN_IO_QDRACO | OFF | 添加对 draco 文件的支持 |
qE57IO | PLUGIN_IO_QE57 | OFF | 使用 libE57 为 e57 文件添加支持。 |
qFBXIO | PLUGIN_IO_QFBX | OFF | 使用官方 FBX SDK 为 AutoDesk FBX 文件添加支持 |
qLASFWIO | PLUGIN_IO_QLAS_FWF | OFF | 仅 Windows。使用 LIBlas 支持带有和不带有波形的 LAS/LAZ (弃用,请考虑使用 qLASIO 替代) |
qLASIO | PLUGIN_IO_QLAS | OFF | 使用 LASZIP 支持带有和不带有波形的 LAS/LAZ (所有平台)。 |
qPDALIO | PLUGIN_IO_QPDAL | OFF | 使用 PDAL 支持 LAS/LAZ 文件 (弃用,请考虑使用 qLASIO 替代) |
qPhotoscanIO | PLUGIN_IO_QPHOTOSCAN | OFF | |
qRDBIO | PLUGIN_IO_QRDB | OFF | 添加对 RDB 的支持。 |
qStepCADImport | PLUGIN_IO_QSTEP | OFF | 添加对 STEP 文件的支持。 |
标准插件
插件名称 | CMake 选项 | 默认值 | 描述 |
---|---|---|---|
q3DMASC | PLUGIN_STANDARD_3DMASC | OFF | 自动点云分类: https://lidar.univ-rennes.fr/en/3dmasc |
qAnimation | PLUGIN_STANDARD_QANIMATION | OFF | 创建视频的插件: https://www.cloudcompare.org/doc/wiki/index.php/Animation_(plugin)。 |
qBroom | PLUGIN_STANDARD_QBROOM | OFF | 交互式清理工具: https://www.cloudcompare.org/doc/wiki/index.php/Virtual_broom_(plugin) |
qCanupo | PLUGIN_STANDARD_QCANUPO | OFF | 自动点云分类: https://www.cloudcompare.org/doc/wiki/index.php/CANUPO_(plugin) |
qCloudLayers | PLUGIN_STANDARD_QCLOUDLAYERS | OFF | 手动点云分类/标记: https://www.cloudcompare.org/doc/wiki/index.php/QCloudLayers_(plugin) |
qColorimetricSegmenter | PLUGIN_STANDARD_QCOLORIMETRIC_SEGMENTER | OFF | 基于颜色的点云分割: https://www.cloudcompare.org/doc/wiki/index.php/Colorimetric_Segmenter_(plugin) |
qCompass | PLUGIN_STANDARD_QCOMPASS | OFF | 在点云上数字化地质结构和结构迹: https://www.cloudcompare.org/doc/wiki/index.php/Compass_(plugin) |
qCork | PLUGIN_STANDARD_QCORK | OFF | 网格布尔运算: https://www.cloudcompare.org/doc/wiki/index.php/Cork_(plugin) |
qCSF | PLUGIN_STANDARD_QCSF | OFF | 自动地面/非地面分类: https://www.cloudcompare.org/doc/wiki/index.php/CSF_(plugin) |
qFacets | PLUGIN_STANDARD_QFACETS | OFF | 结构地质学插件: https://www.cloudcompare.org/doc/wiki/index.php/Facets_(plugin) |
qHoughNormals | PLUGIN_STANDARD_QHOUGH_NORMALS | OFF | 法线计算: https://www.cloudcompare.org/doc/wiki/index.php/HoughNormals_(plugin) |
qHPR | PLUGIN_STANDARD_QHPR | OFF | 隐藏点去除: https://www.cloudcompare.org/doc/wiki/index.php/Hidden_Point_Removal_(plugin) |
qJSonRPCPlugin | PLUGIN_STANDARD_QJSONRPC | OFF | Json/RPC 控制插件 |
qM3C2 | PLUGIN_STANDARD_QM3C2 | OFF | 鲁棒点云距离计算: https://www.cloudcompare.org/doc/wiki/index.php/M3C2_(plugin) |
qMasonry | 砌体结构分割: https://www.cloudcompare.org/doc/wiki/index.php/Masonry_Segmentation_(plugin) | ||
- qAutoSeg | PLUGIN_STANDARD_MASONRY_QAUTO_SEG | OFF | |
- qManualSeg | PLUGIN_STANDARD_MASONRY_QMAN_UAL_SEG | OFF | |
qMeshBoolean | PLUGIN_STANDARD_QMESH_BOOLEAN | OFF | 网格布尔运算: https://www.cloudcompare.org/doc/wiki/index.php/Mesh_Boolean_(plugin) |
qMPlane | PLUGIN_STANDARD_QMPLANE | OFF | 相对于定义的平面的法线距离测量: https://www.cloudcompare.org/doc/wiki/index.php/MPlane_(plugin) |
qPCL | PLUGIN_STANDARD_QPCL | OFF | PCL 库的部分算法接口: https://www.cloudcompare.org/doc/wiki/index.php/Point_Cloud_Library_Wrapper_(plugin) |
qPCV | PLUGIN_STANDARD_QPCV | OFF | 网格或点云的环境光遮蔽: https://www.cloudcompare.org/doc/wiki/index.php/ShadeVis_(plugin) |
qPoissonRecon | PLUGIN_STANDARD_QPOISSON_RECON | OFF | 表面网格重建: https://www.cloudcompare.org/doc/wiki/index.php/Poisson_Surface_Reconstruction_(plugin) |
qRANSAC_SD | PLUGIN_STANDARD_QRANSAC_SD | OFF | 自动 RANSAC 形状检测: https://www.cloudcompare.org/doc/wiki/index.php/RANSAC_Shape_Detection_(plugin) |
qSRA | PLUGIN_STANDARD_QSRA | OFF | 旋转表面分析: https://www.cloudcompare.org/doc/wiki/index.php/Surface_of_Revolution_Analysis_(plugin) |
qTreeIso | PLUGIN_STANDARD_QTREEISO | OFF | 单个树的隔离: https://www.cloudcompare.org/doc/wiki/index.php/Treeiso_(plugin) |
其他指示
某些插件的依赖项没有在 CloudCompare 的存储库中,因此它们需要额外的步骤来安装。本节旨在记录这些插件的安装步骤。
qAnimation
qAnimation 插件有一个额外的选项 QANIMATION_WITH_FFMPEG_SUPPORT
,用于能够使用 FFMPEG 创建视频。
qE57IO
如果您想要使用 LibE57 文件支持编译 CloudCompare (和 ccViewer),您需要:
-
Xerces-C++ 多线程 静态 库
- 在 Ubuntu 上安装包
libxerces-c-dev
- 在 Visual C++ (Windows) 上:
- 选择
Static Debug
或Static Release
配置 - 您将需要手动修改
XercesLib
项目选项,以使得C/C++ > Code Generation > Runtime Library
在 release 和 debug 模式下都是 DLL 类型 (即/MD
在 release 或/MDd
在 debug) - 对于 64 位版本,请确保选择正确的平台 (x64 而不是 Win32)。如果使用的是 Visual Studio Express 2010,则还需确保
toolset
(在项目属性中) 设置为类似于Windows7.1SDK
- 选择
- 只需编译 XercesLib 项目
- 最终,CMake 将在
/include
(而不是/src
) 和/lib
(没有 Release 或 Debug 子文件夹) 中查找结果文件。默认情况下,Visual 项目将这些文件放在/Build/WinXX/VCXX/StaticXXX
中。因此,您应该创建一个具有正确组织的自定义文件夹,并将文件复制到该文件夹中。
- 在 Ubuntu 上安装包
-
LibE57 (最后测试版本: Windows 上的 2.0.1)
- 在
plugins/core/IO/qE57IO/extern/libE57Format
中检出子模块,或下载并提取最新的 libE57Format 发行版
- 在
qPCL
qPCL 依赖于 PCL 库。请按照他们网站上的说明 PCL 进行操作。
qFBXIO
如果您想要在 CloudCompare (和 ccViewer) 中使用 FBX 文件支持编译,您需要: 官方的 Autodesk’s FBX SDK (最后测试版本: Windows 上的 2015.1)
然后,CloudCompare 的 CMake 项目将要求您设置以下 3 个变量:
FBX_SDK_INCLUDE_DIR
:FBX SDK 包含目录 (非常直观 😉FBX_SDK_LIBRARY_FILE
:主 FBX SDK 库 (例如libfbxsdk-md.lib
)FBX_SDK_LIBRARY_FILE_DEBUG
:用于调试模式的主 FBX SDK 库 (如果有的话)
qLASIO
如果您想要在 CloudCompare (和 ccViewer) 中使用 LAS/LAZ 文件支持,您需要 LASZip。
qPDALIO [已弃用]
如果您想要编译已弃用的 PDAL I/O 插件以加载 LAS/LAZ 文件,您需要 PDAL。
qLASFWIO [已弃用]
已弃用的 LAS FWF I/O 插件也可以在 Windows 上编译,使用 LASlib。
您将需要设置以下变量:
LASLIB_INCLUDE_DIR
:LAStools/LASlib/incLASZIP_INCLUDE_DIR
:
LAStools/LASzip/src
LASZIP_LIBRARY_FILE
:laszip.libLASLIB_LIBRARY_FILE
:las.lib
这些在构建 CloudCompare 的 CMake 配置过程中设置。