一、背景
CCCoreLib是开源软件CloudCompare中的算法库,在使用中发现CCCoreLib中的功能貌似比PCL中的效率更高。我曾阅读过二者的部分源代码,在我看来PCL更像一本教科书,算法的实现与原始论文中的描述基本无差,对于了解方法的人很容易阅读,除此以外PCL的代码书写也可以让C++使用者受益良多;而CCCoreLib则做了不少工程优化来提高效率,潜在的缺点是维护人员少,相关开发者少,可能不太适合新手上手。做项目时候也可以对比一下二者的效果,选择更合适的。
二、编译过程记录
不同C++库编译起来其实大差不差,也建议大家跟着做每一步的时候想一下是这步是为了什么,之后也就能举一反三了。
-
到github中的CCCorLib仓库clone最新版本的源码
-
在指定位置打开命令行工具,输入
git clone "复制的地址"
,并在根目录下创建build文件夹来保存编译结果,结束后文件目录如下
-
启动
cmake-gui
来生成vs解决方案Where is the source code
选择有CMakeList的最上层目录
Where to build the binaries
选择刚创建的build文件夹- 点击
configure
,根据自己需要选择编译器以及平台,我的环境是VS2019,然后点击Finish
- 通常第一次构建都会报错,不需要担心,根据报错信息补全依赖库即可
nanoflann
是一个非常经典的项目,用来实现最近邻搜索,是FLANN的轻量化版本。同样,前往其GitHub仓库,按照报错信息将其clone到对应位置即可- 作者使用了Qt来处理多线程,Qt的安装有点麻烦,可以选择不使用它,将
CCCORELIB_USE_QT_CONCURRENT
取消掉即可
- 记得修改
CMAKE_INSTALL_PREFIX
,(你也不想都安装到C盘吧 - 这时候再
configure
就没啥问题了,然后点击generate
-
打开build文件夹下的
CCCoreLib.sln
,右键ALL_BUILD
,点击build
-
继续改bug
- Qt相关的bug
这部分好像是作者没有处理好,既然有不依赖的Qt的选项,那其实不该有这样的错误。但好在你只需要把这些与Qt相关的代码注释掉即可,好像就五六行的样子。 - ‘SearchParams’: is not a member of ‘nanoflann’
这个应该也是没有跟nanoflann的版本对应好,新版本中SearchParams
已经更改成了SearchParameters
,修改过后就可以通过了
- Qt相关的bug
三、最后
编译的结果就是如下几个文件
如何配置库我就不多说了,无外乎那几个步骤,配置include路径,配置lib路径,添加附加依赖项,实在不会可以去看我之前配置PCL的文章,就是路径不一样,操作都是一样的。