安装 CGAL 3.6.1
1.安装 CMake, Boost, QT,如前文所述。下载CGAL最新版本3.6.1, www.cgal.org
2.运行安装程序,选择你用的Compilers,Variants四个都勾上。然后可选择安装几个预编译库,环境变量CGAL_DIR也选上,我的安装目录是 C:\CGAL-3.6.1,等待完成。
3.增加环境变量QTDIR = C:\Qt\4.6.3,增加环境变量BOOST_ROOT = C:\boost
4.打开命令行窗口(start->run->cmd),键入 cd C:\CGAL-3.6.1,键入 "cmake-gui ."
5.点击 Configure 并选择你的编译器,完成后可以看到红色的变量,其中后边那些WITH_XXX是要Build的库,不用的可以去掉,如Qt3。如果不怕慢,可以选择把demos和examples也配置了,设置好之后再按一次 Configue 按钮
6.点击 Configure,直到Generate能够操作之后,点击Generate,完成后可以关掉CMake。(祈祷吧,如果在这里出现问题会比较麻烦)
7.在 C:\CGAL-3.6.1 中将会产生一个解决方案,用 Visual Studio 打开。
8.CGAL 需要的 Boost 库是 Multithread 和 Multithread Debug 版本,CGAL3.6.1 不支持 Boost1.42.0 版本,必须用之前的Boost版,否则至少出现“error C2061: syntax error : identifier 'intmax_t'”之类的错误,如果非得要编译过去,可注释掉 C:\CGAL-3.6.1\auxiliary\gmp\include\mpfr.h 文件中的48-50行。
9.选择 Build->Clean Solution,选择 Build->Rebuild Solution。如果选择了demos和examples会很久。等待安装完成。
10.检查环境变量PATH中是否有 C:\CGAL-3.6.1\auxiliary\gmp\lib。set Path=%Path%;C:\CGAL-3.6.1\auxiliary\gmp\lib
11.Creating a Visual Studio Project that uses CGAL and QT
新建一个空的 win32 console application 工程,tools->options->projects and solutions->VC++ directories,添加
Include Files:
C:\CGAL-3.6.1\auxiliary\gmp\include
C:\Qt\4.6.3\include
C:\Qt\4.6.3\include\QtCore
C:\Qt\4.6.3\include\QtGui
C:\Qt\4.6.3\include\ActiveQt
C:\Qt\4.6.3\mkspecs\win32-msvc2008(或win32-msvc2005)
C:\boost\include\boost-1_43
C:\CGAL-3.6.1\include
Library Files:
C:\CGAL-3.6.1\auxiliary\gmp\lib
C:\CGAL-3.6.1\lib
C:\boost\lib
C:\Qt\4.6.3\lib
Right click your project and select Properties
Go to Configuration Properties -> Linker -> Input and copy the following line to the Additional Dependancies line : C:\Qt\4.6.3\lib\qtmaind.lib C:\Qt\4.6.3\lib\QtGuid4.lib C:\Qt\4.6.3\lib\QtCored4.lib
That's it, you can write your code and compile it here is an example of a main.cpp that should compile now :
----------------- CUT HERE ------------------
#include <iostream>
#include <boost/format.hpp>
#include <QtGui>
#include <CGAL/Qt/GraphicsViewNavigation.h>
#include <QLineF>
#include <QRectF>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
scene.setSceneRect(0,0, 100, 100);
scene.addRect(QRectF(0,0, 100, 100), QPen(QColor(255,0,0)));
scene.addLine(QLineF(0,0, 100, 100));
scene.addLine(QLineF(0,100, 100, 0));
QGraphicsView* view = new QGraphicsView(&scene);
CGAL::Qt::GraphicsViewNavigation navigation;
view->installEventFilter(&navigation);
view->viewport()->installEventFilter(&navigation);
view->setRenderHint(QPainter::Antialiasing);
view->show();
return app.exec();
}