CGAL 5.0的安装、编译和配置(VS2017)

CGAL 5.0的安装、编译和配置(VS2017)

  • 0. 前言
  • 1. 环境与下载
    • 1.1 环境
    • 1.2 下载
  • 2.安装
    • 2.1 安装Boost
    • 2.2 其它依赖库
      • CMake
      • zlib
      • libQGLViewer
      • eigen
    • 2.3 CGAL安装
    • 2.4 编译
  • 3.Demo
  • 4.VS属性页

(本文亦发于知乎)

0. 前言

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

1. 环境与下载

1.1 环境

本人使用的是 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_64\lib\cmake 目录下没有出现相应的文件。这种情况下,请安装其它版本的Qt并在安装时勾选Qt Script。

1.2 下载

1)本体 CGAL 5.0,Windows下最方便还是用exe吧~
CGAL 5.0.exe
2) CMake 推荐使用最新版本,当前为3.16.2,推荐msi:
CMake
3) 主要依赖库——Boost 最新版本为1.72.0:
Boost 1.7.2
4)其余可能用到的依赖库,以zlib、libQGLViewer、eigen为例:

  • zlib,最新版本 1.2.11,下载 tar.gz 这样的压缩包即可:Zlib
  • libQGLViewer,目前是2.7.2,似乎挺久没更新啦(据我后面安装来看,并不需要 libQGLViewer,暂时放这备用):libQGLViewer
  • Eigen 3.3.7,右侧 Get it 栏中下载压缩包即可:Eigen

2.安装

2.1 安装Boost

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

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

cd C:\dev\boost_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:\dev\boost_1_72_0

The following directory should be added to linker library paths:

   C:\dev\boost_1_72_0\stage\lib

在 系统属性 - 高级 - 环境变量 的系统变量 或 用户变量 (看需求)中添加变量名 BOOST_INCLUDEDIR 和 BOOST_LIBRARYDIR ,对应变量值分别为上述结果中的两个路径,如:
CGAL 5.0的安装、编译和配置(VS2017)_第1张图片

2.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:\dev\zlib_build,一般configure然后generate就行了。configure后可以看一眼,确认下INSTALL下各个路径是不是在C:\Program Files (x86)\zlib 下。

用VS打开 C:\dev\zlib_build\zlib.sln (当然也可能在你选择的其它文件夹里),分别在debug和release模式下,依次右键ALL_BUILD和INSTALL - 生成(应该来说右键INSTALL然后生成就可以了,不确定),这时C:\Program Files (x86)\zlib 下就生成了我们需要的include和lib文件:
CGAL 5.0的安装、编译和配置(VS2017)_第2张图片

libQGLViewer

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

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

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

QGLViewer\QGLViewerd2.lib 和 QGLViewer\QGLViewer2.lib 即是我们所需的。

eigen

解压即可,如解压至 C:\dev\eigen-3.3.7 。

2.3 CGAL安装

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

逐条介绍下 CMake 3.13.2+CGAL 5.0 的配置
CGAL 5.0的安装、编译和配置(VS2017)_第3张图片

  • 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 这一组可能需要手动填写:在默认情况下,应该这样填写:
    在这里插入图片描述
    重新 configure ,配置列表将被更新,需要填写其中你需要的组件相关的,例如 Ungrouped Entries 里会增加EIGEN3_INCLUDE_DIR,需填写解压所在的文件夹。如果安装了VTK、OpenCV等,也可以填写相应路径。因为 demos 和 examples 里包含许多依赖库,如METIS,OpenMesh、Cimg。看个人需求,不要就不用管那些个NOT FOUND,期间需要configure多次,直到确认红字中提示缺少的确实是你没有安装的,然后Generate就好。

2.4 编译

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

3.Demo

以 Surface mesh 为例,打开 CGAL-5.0 build\examples\Surface_mesh\Surface_mesh_Examples.sln,将draw_surface_mesh设为启动项目,release模式编译运行,会发现缺少dll:
CGAL 5.0的安装、编译和配置(VS2017)_第4张图片

最笨的方法当然是逐个将 Qt\Qt5.13.0\5.13.0\msvc2017_64\lib 中各dll复制到 CGAL-5.0 build\examples\Surface_mesh\Release 路径下,也可将这些文件的完整路径名加入到链接 - 输入 - 附加依赖项 中。

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

这时还有一个问题是这里并没有源码中所写的 data/elephant.off ,将 CGAL-5.0\examples\Surface_mesh\data 中的该文件复制到 CGAL-5.0 build\examples\Surface_mesh\data 下,运行:
CGAL 5.0的安装、编译和配置(VS2017)_第5张图片
唔,还行吧……

4.VS属性页

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

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

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

C:\dev\CGAL-5.0\auxiliary\gmp\lib\libmpfr-4.lib
C:\dev\CGAL-5.0\auxiliary\gmp\lib\libgmp-10.lib

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

C:\dev\CGAL-5.0 build\include
C:\dev\CGAL-5.0\include
C:\dev\CGAL-5.0\auxiliary\gmp\include
C:\dev\boost_1_72_0

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

你可能感兴趣的:(图像处理)