我的基本配置是windows 7, Visual Studio 2015, 安装的cgal4.9,其他库都是最新版本cmake 3.7,Qt 5.8,boost 1.6。
我主要参考了一篇中文博客http://blog.csdn.net/u012876599/article/details/51602101 和官方的教程http://www.cgal.org/download/windows.html
另外有篇博客也值得参考 http://acg.cs.tau.ac.il/cgal-at-tau/installing-cgal-and-related-programs-on-windows
1,安装CMake和QT
CMAKE: https://cmake.org/
QT: https://www.qt.io/download/
这两个库安装起来都比较简单,跟着官网步骤走就可以,我直接都下载的最新的版本。但是QT装完之后要加环境变量(system environment variable)到系统中,第一步是加C:\Qt\Qt5.8.0\5.8\msvc2015_64\bin到path, 第二步是新建一个环境变量QT_DIR,设置变量值为C:\Qt\Qt5.8.0 。这个安装版本不同安装路径会略有差异。
2,安装boost
我主要根据上面提到的中文教程进行安装的boost库。 然后要添加系统环境变量。我加了三个BOOST_ROOT:C:\boost_1_63_0, BOOST_INCLUDEDIR:C:\boost_1_63_0\stage\lib和BOOST_LIBRARYDIR:C:\boost_1_63_0, 同时往path中添加C:\boost_1_63_0\stage\lib;
3,CMAKE
打开cmake gui就可以build CGAL工程了,因为我是用VS2015, 所以我就选择VS2015 compiler,但是我的cmake找不见我的VS2015 compiler,所以我是直接从命令行运行cmake,打开你从网上下载的cgal的文件夹,在文件地址栏输入cmd,可调出命令行, 然后输入cmake CMakeLists.txt 就可以了。如果前面那些prerequisite库都安装成功,环境变量也没有漏掉,就可以成功生成vs sln。
4, VS15
打开上一步生成sln,进行编译。我当时遇到一个问题fatal error LNK1112: module machine type x64 conflicts with target machine type 'X86'
因为我的下载的库都是64位的,但是cmake生成的sln都是默认用X86的进行编译,所以这里要改下配置,Properties > Configuration Properties > Linker > Advanced > Target Machine. Select MachineX64。以及Project Properties -> Configuration Properties -> Linker -> Command line. "Additional Options" should NOT contain /machine:X86
5,把CGAL也加入到环境变量CGAL_DIR: C:\dev\CGAL-4.9,同时向path中加入新的值C:\dev\CGAL-4.9\bin;C:\dev\CGAL-4.9\auxiliary\gmp\lib;C:\dev\CGAL-4.9\lib
6,Test
新建一个自己的工程,建立一个属性表,对于这种配置比较麻烦的工程,我一直提倡建一个属性表,以后可以直接把属性表加上去就可以了。
一共要设置
Linker ->general ->Additional Library Directories
C:\dev\CGAL-4.9\bin;C:\dev\CGAL-4.9\auxiliary\gmp\lib;C:\dev\CGAL-4.9\lib;C:\boost_1_63_0\stage\lib;
C++->General->Additional Include Directories
C:\dev\CGAL-4.9\auxiliary\gmp\include;C:\dev\CGAL-4.9\include;C:\boost_1_63_0;
Linker->Input->AdditionalDependencies
kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;CGAL-vc140-mt-gd-4.9.lib;CGAL_Qt5-vc140-mt-gd-4.9.lib;CGAL_ImageIO-vc140-mt-gd-4.9.lib;CGAL_Core-vc140-mt-gd-4.9.lib;libgmp-10.lib;libmpfr-4.lib
最后的最后,我又遇到了一个问题,显示一个库文件无法load,我导师说你应该检查一下dll和lib的timestamp是不是一致,我检查了之后发现这两个果真不一致,于是重新编译了一遍cgal,发现这个bug就解决了。导师万岁!