eigen库安装_CGAL 5.0的安装、编译和配置(VS2017)

a7857715397750a0dc2acb9809631064.png

0. 前言

不久前,CGAL 5.0 正式被纳入稳定版,和先前的4.14版本相较不仅仅有算法上的“重大改变”和“突破性变化”,其安装、配置也稍有不同,对于不习惯使用CMake生成具体项目文件的人来说,VS属性页的配置也会有些区别。

1. 环境与下载

0) 环境:本人使用的是 Win 10 + VS 2017 + Qt 5.13

更新的VS和Qt版本应该都是可以的。

这里Qt注意两点:

  • 最好在VS上安装 Qt VS tools
  • 安装Qt时未安装 Qt Script的,使用 MaintenanceTool.exe 添加组件,储存库/资料库(如果需要)可填写https://mirrors.tuna.tsinghua.edu.cn/qt/online/qt5/windows/x86/online_repository/ ,部分Qt版本如5.11并不具有对应的Qt Script,根据Qt wiki应该添加前一版本对应的,但是这一方法并没有用,msvc2017_64libcmake 目录下没有出现相应的文件。这种情况下,请安装其它版本的Qt并在安装时勾选Qt Script

1) 本体 CGAL 5.0,Windows下最方便还是用exe吧~

CGAL-5.0-Setup.exe​github.com

2) CMake 推荐使用最新版本,当前为3.16.2,推荐msi:

Download | CMake​cmake.org

3) 主要依赖库——Boost 最新版本为1.72.0:

Boost 1.72.0​www.boost.org

4)其余可能用到的依赖库,以zlib、libQGLViewer、eigen为例:

a. zlib,最新版本 1.2.11,下载 tar.gz 这样的压缩包即可:

zlib Home Site​www.zlib.net
0f65ea27dcdb49c8ed29524e5aedae7b.png

b. libQGLViewer,目前是2.7.2,似乎挺久没更新啦:(据我后面安装来看,并不需要 libQGLViewer,暂时放这备用)

libQGLViewer on Windows​libqglviewer.com

c. Eigen 3.3.7,右侧 Get it 栏中下载压缩包即可:

Eigen​eigen.tuxfamily.org

2.安装

1)安装Boost

首先解压boost_1_72_0.7z/boost_1_72_0.zip,解压路径如 C:devboost_1_72_0

运行该目录下bootstrap.bat。稍等,会生成b2.exe和bjam.exe等文件,之后Win+R打开cmd,切换路径至该文件夹,如:

cd C:devboost_1_72_0

由于Boost实在是太大了,全部编译非常耗时和占用磁盘空间,而CGAL仅依赖于system和-thread,因此只编译这两个库:

b2.exe --with-system --with-thread

耐心等待,会得到像这样的结果:

The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    C:devboost_1_72_0

The following directory should be added to linker library paths:

    C:devboost_1_72_0stagelib

在 系统属性 - 高级 - 环境变量 的系统变量用户变量 (看需求)中添加变量名 BOOST_INCLUDEDIR 和 BOOST_LIBRARYDIR ,对应变量值分别为上述结果中的两个路径,如:

7c6b91270fdfae763cca4353b8f598e8.png
Boost环境变量

2)其它依赖库

CMake

CMake的安装就不赘述,安装时可以选择添加到PATH。这里简述CMake的使用方法:

在 where is the source code 处填入源代码所在的文件夹,该路径下应有 CMakeLists.txt;

在 where to build the binaries 处填入建构项目的目标文件夹,这个文件夹一般应该是空的;

中间部分为建构项目所需的一些配置,建议勾选“grouped”,显示更一目了然。

zlib

Windows下zlib的安装是有些令人困惑的,一些教程也是语焉不详,这里给出的方法如果有问题请提醒我更正。

首先解压,打开 CMake - gui ,where is the source code 填入解压后的文件夹,where to build the binaries 填入一个新建的文件夹,如 C:devzlib_build,一般configure然后generate就行了。configure后可以看一眼,确认下INSTALL下各个路径是不是在C:Program Files (x86)zlib 下。

用VS打开 C:devzlib_buildzlib.sln (当然也可能在你选择的其它文件夹里),分别在debug和release模式下,依次右键ALL_BUILD和INSTALL - 生成(应该来说右键INSTALL然后生成就可以了,不确定),这时C:Program Files (x86)zlib 下就生成了我们需要的include和lib文件:

7f5a7d99664c32d4f9c361c17508c53a.png

libQGLViewer

(据我后面安装来看,并不需要 libQGLViewer,暂时放这备用)

可以依照官网给出的步骤,解压后,用 Qt Creator 打开 libQGLViewer-2.7.2.pro ,Configure Project时勾选MSVC,右键构建即可。

在debug模式下可能出现报错:无法打开文件“QGLViewerd2.lib”,暂时不知道如何解决,但 QGLViewerQGLViewerd2.lib 文件实际上可以正常生成(因为QGLViewer子项目可以生成成功),而在release模式下可以正常生成所有项目。

QGLViewerQGLViewerd2.lib 和 QGLViewerQGLViewer2.lib 即是我们所需的。

eigen

解压即可,如解压至 C:deveigen-3.3.7 。

3)CGAL安装

终于到CGAL本体啦!运行CGAL-5.0-Setup.exe,最好将它安装到一个较简短的路径下,如C:devCGAL-5.0 。 打开CMake,如前述的zlib,第一个where填刚才的路径,第二个where填一个新建的文件夹路径,如C:devCGAL-5.0 build ;

逐条介绍下 CMake 3.13.2+CGAL 5.0 的配置

08dd29ab2f71cffe1468dcc23ceff3cd.png
  • Ungrouped Entries 里基本都是Qt的路径,如果没有正常识别,需在环境变量中添加Qt5_DIR ,并重新configure一下;
  • BUILD 和 CGAL 基本不用管;
  • Boost 要注意下,这里正确识别出了 Boost的包含目录,下方也给出了正确的Boost版本号:USING BOOST_VERSION = '1.72.0',但Boost_DIR显示为not found,这是CMake的问题,无需过于介意;
  • GMP 和 MPFR 里路径应该都是 CGAL-5.0/auxiliary/gmp 下的;
  • WITH 这组要特别注意,根据需求勾选,建议勾上 WITH demos 和 WITH examples ,有例子更容易验证安装是否成功;
  • ZLIB 这一组可能需要手动填写:在默认情况下,应该这样填写:

e6c428759f56a07ba9bbf0eeb7c4aa86.png

重新 configure ,配置列表将被更新,需要填写其中你需要的组件相关的,例如 Ungrouped Entries 里会增加EIGEN3_INCLUDE_DIR,需填写解压所在的文件夹。如果安装了VTK、OpenCV等,也可以填写相应路径。因为 demos 和 examples 里包含许多依赖库,如METIS,OpenMesh、Cimg。看个人需求,不要就不用管那些个NOT FOUND,期间需要configure多次,直到确认红字中提示缺少的确实是你没有安装的,然后Generate就好。

4)编译

Generating done后,用VS打开CGAL-5.0 buildCGAL.sln,release模式下右键ALL_BUILD,生成。

3.Demo

以 Surface mesh 为例,打开 CGAL-5.0 buildexamplesSurface_meshSurface_mesh_Examples.sln,将draw_surface_mesh设为启动项目,release模式编译运行,会发现缺少dll:

e7b25f1b65857e92ba1a6d467313d7a9.png

最笨的方法当然是逐个将 QtQt5.13.05.13.0msvc2017_64lib 中各dll复制到 CGAL-5.0 buildexamplesSurface_meshRelease 路径下,也可将这些文件的完整路径名加入到链接 - 输入 - 附加依赖项 中。

究其根本,这是代码生成模式的问题,理论上将 代码生成 - 运行库 从 MD 改为 MT 就可以了,但是直接改会报错,目前尚不清楚原因,麻烦些用动态链接就可以了。

这时还有一个问题是这里并没有源码中所写的 data/elephant.off ,将 CGAL-5.0examplesSurface_meshdata 中的该文件复制到 CGAL-5.0 buildexamplesSurface_meshdata 下,运行:

9d6718fb9661e02931ae6d7905d804d6.png

唔,还行吧……

4.VS属性页

忘了属性页了,如果不愿意用CMake生成的话,如何填写VS属性页呢?

我们可以参考CMake生成文件是如何填写的,在排除Qt的情况下,VS属性页的填写实际上相较4.14更简单了:

链接 - 输入 - 附加依赖项:

  • C:devCGAL-5.0auxiliarygmpliblibmpfr-4.lib
  • C:devCGAL-5.0auxiliarygmpliblibgmp-10.lib

C/C++ - 常规 -附加包含目录:

  • C:devCGAL-5.0 buildinclude
  • C:devCGAL-5.0include
  • C:devCGAL-5.0auxiliarygmpinclude
  • C:devboost_1_72_0

当然比较传统的写法是 VC++目录 - 包含目录中填写以上的四项,都是可以的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值