一. 编译CGAL
这个版本的编译在官方文档中有很多指导,但是依然有个别细节需要注意。
大概情况如下:
编译demo时,用太新的qt(比如qt5.8)会导致interface未定义错误。最后版本罗列如下:qt5.6msvc201564、boost 1.60 、libQGLViewer2.6.3、tbb64 201702...、 Eigen3 、
0. 官网下载CGAL-4.11-Setup.exe,这是一个解压源码的exe,里面并没有lib和dll,安装后需要进行下面的编译步骤。安装在比如G:\dev\CGAL-4.11-beta1。安装时不选html,官网文档很好用。
1. 使用CMake GUI,假设大家都很熟悉cmake的使用。
2. 有一个必备的第3方Lib列表需要安装,阅读官方文档会收获更多的信息:
8.1 Standard Template Library (STL)这个VS编译器中是有的,不用做什么事儿。
8.2 Boost 这个到官网下载Binary版:boost_1_60_0-msvc-14.0-64.exe(270多MB),安装在在比如H:\boost_1_60_0;
8.3 GMP and MPFR,这两个在CGAL的源码setup.exe中有下载选项,下载后在代码目录里含有。比如H:\dev\CGAL-4.11\auxiliary\gmp\lib
8.4 zlib,下载zip文件,解压,cmake之,然后生成项目,然后将INSTAL生成一下(既要Debug也要Release)。注意cmake中配置的install路径。配置CGAL的cmake时要找到它。D:\Program Files\zlib\lib
8.5 OpenGL :win10系统中一般默认含有这个,基本不用管。
8.6 Qt5,我用的是qt-opensource-windows-x86-msvc2015_64-5.6.0.exe不要用高版本的qt,因为互相依赖关系和qt新版本的interface有变化)。
8.7 libQGLViewer, 这是可选的,但最好也下载之,demo中要用,非常好的工具; 最好在官网下载libQGLViewer-2.6.3.zip或在此处下载,编译一下;用QT Creator打开H:\dev\libQGLViewer-2.6.3\QGLViewer\QGLViewer.pro,然后在Creator的菜单"构建"->执行qmake,然后->构建所有项目,这会导致debug和release同时被构建,要知道他们的路径,比如:H:\dev\libQGLViewer-2.6.3\QGLViewer 。
8.8 Eigen3, 最好也配置,很多项目要用它;这个不用编译,直接引用头文件的一个数学库。
8.9 VTK自己手工编译的,安装在D:\Program Files\VTK\。配置CMake中的VTK_DIR为 D:\Program Files\VTK\lib\cmake\vtk-8.0
1. Boost_INCLUDE_DIR是 H:/boost1.6.0;而不是H:/boost_1_65_1/boost。因为代码中都是#include <Boost/***.h>。CMakegui中选中CGAL_Boost_USE_STATICLIBS,并
2. Qt5_DIR 参考配置为D:/Qt/Qt5.6.0/5.6/msvc2015_64/lib/cmake/Qt5
3. 在CMake GUI中选中 WITH_Eigen3、WITH_QGLViewer、WITH_ZLIB;然后configure一下,再配置:
(1)QGLVIEWER_INCLUDE_DIR为H:/dev/libQGLViewer-2.6.3
(2)EIGEN3_INCLUDE_DIR为 D:/eigen-eigen-b9cd8366d4e8;不是D:/eigen-eigen-b9cd8366d4e8/eigen,道理同boost
(3)配置zlib
4. 在CMake GUI中选中 WITH_Demos,不要选择WITH_examples,那个以后挨个来学习就好了,而且会大大增加编译时间和复杂度。
然后再Configure一下,看看有没有Error等。
如果愿意配置TBB的话,可以在此下载并解压即可;
然后,Genrate,并用VS2015打开CGAL.sln,并在vs2015的生成菜单中选择“生成解决方案”。编译大概二十分钟。
然后,找到 INSTALL,右击,生成就会安装到 C:\Program Files\CGAL中各种inlcude lib bin文件夹。
这样就可以在项目中正常使用CGAL的lib了;
二. 在自己的项目中应用CGAL库
自己创建一个win32命令行项目: CGAL HelloWorld:
注意 :
1. 有些项目需要在项目属性中配置boost和eigen,比如 VC++目录:包含目录:G:\dev\boost_1_60_0 和 D:\eigen-eigen-b9cd8366d4e8
2. 在用到Eigen3命名空间的项目,要在CPP原文件中加入宏CGAL_EIGEN3_ENABLED, 方式如下:
#define CGAL_EIGEN3_ENABLED
#include <CGAL/Surface_mesh_deformation.h>
3. 有些项目需要在项目属性中配置gmp的include和lib
三. 编译cgal demo的注意点
1. CIMG_INCLUDE_DIR 我也配置了,用解压后的文件夹配置,比如:H:\dev\CImg-2.0.5_pre092517
2. 在CMake中配置boost的lib文件,选中用带libboost***.lib的文件,比如 : H:\boost_1_60_0\lib64-msvc-14.0/libboost_filesystem-vc140-mt-1_60.lib