CloudCompare + VS2015 编译指南,手把手教你配置最全插件!

CloudCompare(下面简称cc)编译教程

官网教程几乎没什么用,找找功能说明或者其他相关资料还行;github教程有点用,可以帮助小白编译一个最简单的、没有其他依赖库和插件的CloudCompare,但是我的需求比较多,还需要其他很多插件。

这种情况下,github教程也没什么用了,况且它已经很久没有更新,我觉得这是一种极不负责的态度。像PDAL这种关键库,涉及las文件的读写,只给出conda的安装方式,但是我用conda安装等了一天一夜,最后还是卡住不动。用vcpkg安装可能是可以,但是因为之前用它安装openMVS总是失败,对vcpkg印象不是很好。

最后用osgeo4w试了一下,除了网速有点慢,其他方面还可以。
网速慢的,直接用我下载和编译的资源,下面进入正题。

准备工作

  • 下载代码:
git clone --recursive https://github.com/cloudcompare/CloudCompare.git

编译源码

如果你只想编译一个最简单的cc,那就直接看github教程的"Generating the project"部分就行了,所有选项保持默认即可,不用往下看。
要编译能支持pcd、las等等文件的cc,还需要pcl、pdal,可能还需要gdal、cgal

Boost(2020.11.23更新)

boost 下载地址:boost v1.72,找到 boost_1_72_0-msvc-14.0-64.exe
设置系统变量 BOOST_ROOT 为 boost 的安装目录,可以解决后文提到的找不到boost目录的问题,如下图所示:
在这里插入图片描述

PCL

PCL最良心,直接给了个exe,免去了很多编译麻烦。良心链接,翻到最下面找到PCL-1.8.1-AllInOne-msvc2015-win64.exe

PDAL

这个库的安装编译非常不友好,官网推荐用conda,很多人都是等了好久还一直卡住不动,有些人的动了,结果是出现各种错误。官网推荐,可能我们和他们是不同星球的……
除了conda,安装pdal的方法还有:

  • 自己编译。有勇气的兄弟可以试试。教程戳这,英文的
  • vcpkg,熟悉vcpkg的朋友可以用vcpkg安装,我用vcpkg有阴影了,就不尝试了。
  • [推荐]osgeo4w,我用osgeo4w,参考这个博客,osgeo4w下载非常慢,我上传了一个可以用的资源,包含PDAL的。
    在cmake里面如下图配置:
    在这里插入图片描述

GDAL 和 CGAL

有了上面两个关键库,读写pcd、las文件就没有问题了,因为我还用到了gdal和cgal,安装也比较简单,就一起写这吧。
GDAL安装教程戳这,注意版本用v2.3.2
CGAL安装教程,先别急着百度,看github上怎么说:Since version 5.0, CGAL is a header-only library, meaning that it is no longer needed to build CGAL libraries before it can be used
意思就是,v5.0以上的,就是个纯头文件库,和Eigen是一样的,不需要编译,只需要下载下来放到个你能找到的位置就行。戳这去下载。我用的版本是 v5.0.2,直接下载里面的 exe 即可。

gdal在cmake里面如下图配置(这里用osgeo4w下载的gdal,而不是用自己编译的,是为了和pdal搭配,但是后面必须用gdal v2.3.2):
在这里插入图片描述
cgal在cmake里面如下图配置
在这里插入图片描述

Option 和 Plugin

下面是我的,测试通过的,使用当前库能达到最多插件、功能的选项。
在这里插入图片描述
在这里插入图片描述
(plugin还有部分没截到,就是不打勾的)
其他的一些cmake_install_prefix、编译debug或release,还有些其他库目录,根据自己电脑的情况设置。

问题汇总

由于本人是用 vs2015 编译的,所以问题比较多。如果用 vs2017 或者 vs2019,问题可能会少一些,也不用修改源码。

坑货boost

如果boost没问题的,请自行忽略这部分。说到boost,我就非常气愤,这里尤其要指出boost这个坑货,之前明明指定好了pcl里面的boost,但是点Configure还是有问题。后面自己下载了一个boost v1.72(下载地址戳这,找到boost_1_72_0-msvc-14.0-64.exe),奇葩的是,第1次点Configure没问题,但是boost的包含目录那个变量(名称为BOOST_INCLUDE_DIR)没了。这时千万不要再点Configure,否则就会出错,又要重新指定,直接点Generate就好了。
然后再进入vs,批生成"All Build",没有出现问题的,跳过这部分。编译出现问题的,估计是没指定boost的库目录,在CloudCompare这个项目中指定好附加库目录和依赖项。
注意:用release编译时,依赖项不要有debug版本的boost库(含有gd后缀的是debug版本),伸手党就直接复制下面的吧,前提是你也是boost v1.7.2和release编译

boost_atomic-vc140-mt-x64-1_72.lib
boost_bzip2-vc140-mt-x64-1_72.lib
boost_chrono-vc140-mt-x64-1_72.lib
boost_container-vc140-mt-x64-1_72.lib
boost_context-vc140-mt-x64-1_72.lib
boost_contract-vc140-mt-x64-1_72.lib
boost_coroutine-vc140-mt-x64-1_72.lib
boost_date_time-vc140-mt-x64-1_72.lib
boost_fiber-vc140-mt-x64-1_72.lib
boost_filesystem-vc140-mt-x64-1_72.lib
boost_graph-vc140-mt-x64-1_72.lib
boost_iostreams-vc140-mt-x64-1_72.lib
boost_locale-vc140-mt-x64-1_72.lib
boost_log-vc140-mt-x64-1_72.lib
boost_log_setup-vc140-mt-x64-1_72.lib
boost_math_c99-vc140-mt-x64-1_72.lib
boost_math_c99f-vc140-mt-x64-1_72.lib
boost_math_c99l-vc140-mt-x64-1_72.lib
boost_math_tr1-vc140-mt-x64-1_72.lib
boost_math_tr1f-vc140-mt-x64-1_72.lib
boost_math_tr1l-vc140-mt-x64-1_72.lib
boost_prg_exec_monitor-vc140-mt-x64-1_72.lib
boost_program_options-vc140-mt-x64-1_72.lib
boost_python38-vc140-mt-x64-1_72.lib
boost_random-vc140-mt-x64-1_72.lib
boost_regex-vc140-mt-x64-1_72.lib
boost_serialization-vc140-mt-x64-1_72.lib
boost_stacktrace_noop-vc140-mt-x64-1_72.lib
boost_stacktrace_windbg-vc140-mt-x64-1_72.lib
boost_stacktrace_windbg_cached-vc140-mt-x64-1_72.lib
boost_system-vc140-mt-x64-1_72.lib
boost_thread-vc140-mt-x64-1_72.lib
boost_timer-vc140-mt-x64-1_72.lib
boost_type_erasure-vc140-mt-x64-1_72.lib
boost_unit_test_framework-vc140-mt-x64-1_72.lib
boost_wave-vc140-mt-x64-1_72.lib
boost_wserialization-vc140-mt-x64-1_72.lib
boost_zlib-vc140-mt-x64-1_72.lib

error C2131: 表达式的计算结果不是常数

(如果采用 vs2017 编译,不会出现这个问题!)
加入了cgal后,总是这个问题。推测应该与cgal参与 cc_core_lib 的构建有关!
在这里插入图片描述
但是红框里面那个勾又必须打上,否则用不了cgal库,会出现其他问题。
搜了很多,github上面有个issue也是一样的问题,说什么cgal官方并不打算解决这个问题。没办法,只能自己解决,稍微修改一下cc的代码就可以编译通过了。
解决思路,这个问题是constepr导致的,那我们就把其中一部分constexpr改成const。注意不是全部改,只改一部分,主要涉及3个文件,如下图:
在这里插入图片描述
至此,编译就可以通过了。找到你的cmake_install_prefix目录,运行一下,发现还是读取不了pcd和las文件,甚至还找不到boost**.dll,继续往下看吧。

插件加载失败,找不到boost**.dll

找不到boost**.dll,自己去把.\boost_1_72_0\lib64-msvc-14.0\目录下的dll复制到cc的同级目录下。
插件加载失败,你会在cc的控制台下发现一些红字如下图:
在这里插入图片描述
QPCL_IO_PLUGIN.dll does not seem to be a valid plugin
QPDAL_IO_PLUGIN.dll does not seem to be a valid plugin

解决方法:在PCL的安装目录下找到OpenNI2.dll,然后再找到之前自己安装的gdal v2.3.2,找到gdal203.dll,均复制到cc的同级目录下。这就是为什么刚刚要安装v2.3.2的gdal

补充

怎么才能知道exe运行缺什么dll?有时exe自己会提示,但是有些偏不提示,我们也不是神仙,也猜不到,那就用Dependency Walker检查一下,Dependency Walker教程戳这

应该差不多了,写了2小时教程,还有问题朋友可以在评论区问

  • 5
    点赞
  • 20
    收藏
  • 打赏
    打赏
  • 3
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

东风小火

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值