win8.1+vs2013下安装CGAL(含qt、boost、cmake)

来源:互联网 发布:蚁群算法 路径优化 编辑:程序博客网 时间:2024/05/16 06:45

我的CGAL配置环境为:windows8.1+vs2013+qt4.8.6+cmake2.8

CGAL是非常强大的算法几何库,它是基于boost库编写的,因此需要要首先配置boost。为了完成计算机辅助几何的项目需要用到很多几何算法(网格划分、几何建模等),所以需要配置安装CGAL,个人感觉这是我遇到过最复杂的软件配置。中间出了很多类型的错误,还好最后终于成功了,现分享经验如下:

工具/原料

  • CGAL

  • cmake

  • Qt

  • boost

  • VS2013

一、安装cmake

  1. 1

    这一步比较简单,下载安装最新版本cmake-2.8,开始如下安装

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  2. 2

    注意这里选择第二个选项,为所有的用户添加系统变量

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  3. 3

    选择安装到目录 F:\CMake 2.8,个人建议最好安装在C盘目录下。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  4. 4

    安装完毕后确认一下系统变量中有没有红色框中的目录,若没有需要手动添加进去。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  5. 5

    cmake安装完毕!

    END

二、安装Boost库

  1. 1

    下载最新版本,当前为boost_1_55_0

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  2. 2

    按 Win+R组合键输入cmd进入命令窗口:

    切换当前目录为boost的安装目录(G:\boost_1_55_0),输入bootstrap.bat

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  3. 3

    执行完上述命令后会在安装目录下生成如下exe文件

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  4. 4

    继续在DOS窗口中输入bjam.exe,程序会根据你当前安装的编译环境(vs2010,vs2012,vs2013)等自动选择与之相适应的库文件和包含文件等。

    此过程大概需要20分钟左右。根据下面第二个图片可以算出我的编译环境为MSVC-12.0即VS2013.

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  5. 5

    20分钟左右后可以看到如下界面,说明Boost库配置完成

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    END

三、安装CGAL

  1. 1

    下载CGAL,这里我下载的是CGAL-4.4这个版本(当前最新的)

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  2. 2

    安装位数选择32位

    如果选择64位进行安装,则会在以后配置完毕后出现类似“无法识别的外部符号。。。”等问题,很难进行正确配置。所以这里最好全部选择32位进行安装。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  3. 3

    安装目录我选择C:\Program Files\CGAL-4.4

    安装在其他目录时可能会出现用Cmake编译时出现好几外错误。可以尝试通过安装在C盘进行解决。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  4. 4

    选择如下几项,单击下一步

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  5. 5

    安装完成后可能会出现如下提示,则需要手动添加F:\CGAL-4.4\auxiliary\gmp\lib到Path变量中

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  6. 6

    此时CGAL安装完成

    END

四、用Cmake配置CGAL库

  1. 1

    打开Cmake软件选择如下目录,注:两个目录是相同的

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  2. 2

    单击“config"-选择如下编译器(默认是32位,与前面安装软件一定要保持一致)

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  3. 3

    单击确定后,出现如下界面说明配置成功

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  4. 4

    找到如下图的这一项,选中,再次单击"config"进行配置

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  5. 5

    单击Generate,此时界面应如下。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  6. 6

    此时在CGAL安装目录下出现如下文件:CGAL.sln

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  7. 7

    打开此文件,此时编译器会自动组建一个解决方案。如下图

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  8. 8

    选择32位debug模式,按F7进行编译,编译完成后如下图所示,表明CGAL至此完全配置成功。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    END

五、举例测试CGAL

  1. 新建一个控制台应用程序,并添加如下代码

    #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();

    }

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  2. 添加包含库目录,操作如下图,注意红色框中的添加内容

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  3. 添加附加库目录,操作如下图,注意红色框中的添加内容

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  4. 直接编译运行此时会出现如下错误,别急,我们离成功只差一步了

    >test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QColor::QColor(int,int,int,int)" (__imp_??0QColor@@QAE@HHHH@Z),该符号在函数 _main 中被引用

    1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QBrush::QBrush(void)" (__imp_??0QBrush@@QAE@XZ),该符号在函数 _main 中被引用

    1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QBrush::~QBrush(void)" (__imp_??1QBrush@@QAE@XZ),该符号在函数 _main 中被引用

    1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ),该符号在函数 _main 中被引用

    1>test.obj : error LNK2001: 无法解析的外部符号 "protected: virtual bool __thiscall QWidget::winEvent(struct tagMSG *,long *)" (?winEvent@QWidget@@MAE_NPAUtagMSG@@PAJ@Z)

    1>test.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __thiscall QWidget::windowActivationChange(bool)" (?windowActivationChange@QWidget@@MAEX_N@Z)

    1>G:\Cpp\Midaxis\CGAL512\Debug\CGAL512.exe : fatal error LNK1120: 81 个无法解析的外部命令

  5. 添加附加依赖项。

    选择“链接器”---“输入”,在其中输入如下添加LIB文件

    phonon4.libQAxContainer.libQtCLucene4.libQtCore4.libQtDeclarative4.libQtDesigner4.libQtGui4.libqtmain.libQtOpenGL4.lib

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
  6. 再次编译运行,即可大功告成了!

    运行结果如下图所示。

    win8.1+vs2013下安装CGAL(含qt、boost、cmake)
    END

注意事项

  • 配置过程中一定要细心,且勿少了某个步骤,否则会出现意想不到的错误

  • 本人花了三天两晚完成了上述配置。如果觉得对你有用,请点个赞哦!

  • http://jingyan.baidu.com/article/1709ad80b673f34634c4f0ac.html

0 0
原创粉丝点击