Qt 平台在windows下配置CGAL


首先我用的平台和库的版本是:Qt Creator 2.5.0 + Qt 4.8.2 + CGAL-4.1+ Boost1.15+CMake2.8.8
一.名词解释
1.CGAL(Computational Geometry Algorithm Library)是一个开源的C++库,用于提供方便高效可靠的几何计算。该库提供数据结构和算法用于三角分,Voronoi图,多边形和多面体布尔运算,曲线整理,网格生成,几何处理,凸包算法等等.所有这些数据结构和算法在几何物体上操作,比如点和线段,并在上面执行几何测试。CGAL提供几何物体的产生和空间排序,也提供一个矩阵搜索框架和解线性和二次型方程。还向第三方软件提供接口。Qt,Geomview,Boost Graph Libraray.
http://www.cgal.org/
 
2.Qt是一个完整的开发框架用于开发桌面、嵌入式和移动平台的用户界面开发。利用Qt可以把一个基本代码在不同平台上重用。Qt Creator 是一个跨平台的集成开发环境。

3.CMake是一个开源的跨平台自动化构建系统,它不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或windows Visual C++的project/workspaces),然后再用一般的建构方式使用。

4.Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。


二.安装步骤
因为CGAL库用到了Boost库,所以在安装CGAL的之前要先安装Boost库。
1.安装Boost,下载boost installer( http://www.boostpro.com/download/),联网安装。下面是Boost installer安装中比较关键的部分。

Variants建构变量决定了你库函数的调用方式,可以选择其中几个或者全选,这样视情况而定。


选择boost的安装组建。全部安装需要大概13.6G左右的空间。Boost库有些只是一些头文件,而有些需要被编译或者安装成二进制文件。可是视情况而选择安装不同的部分。对于CGAL-4.1 需要Version 1.39 boost以上,需要头文件和线程库(Boost.Thread和Boost.System)。在Windows上使用的是自动连接,我们需要boost的Boost.Serialization和Boost.DateTime。但是CGAL本身不使用。在CGAL的一些例子中是基于Boost.Program_options的。所以理论上我们选择上面提到的几个组建就可以了。如果害怕不行全选也没事。我第一次做的这个例子的时候就是全选的。


2.用CMake编译CGAL
CGAL安装程序默认安装到某个文件夹就ok了,Path路径一般会自动加上。打开CMake选择源代码路径指向你安装CGAL的目录,选择构建二进制目录,一般是新创建一个目录。如图所示:我在CGAL目录下面新建了一个VS2010目录用于生产建构档。

然后你选择你编译器,我用的是vs2010编译的。点击Configure,成功之后点击Generate.如图


最后用vs2010打开你构建文件夹里面的CGAL.sln进行编译就好。编译后在环境变量中增加  D:\3DReConstruction\CGAL-4.1\vs2010\bin;

3.在Qt Creator里写一个HelloWord的CGAL的测试程序
首相我简历一个控制台程序,然后设置包含目录和lib文件
INCLUDEPATH +=  D:\3DReConstruction\boost\boost_1_51\
                D:\3DReConstruction\CGAL-4.1\include\
                D:\3DReConstruction\CGAL-4.1\auxiliary\gmp\include\
 
    
LIBS += D:\3DReConstruction\CGAL-4.1\auxiliary\gmp\lib\libgmp-10.lib\
        D:\3DReConstruction\boost\boost_1_51\lib\libboost_thread-vc100-mt-gd-1_51.lib\
        D:\3DReConstruction\boost\boost_1_51\lib\libboost_system-vc100-mt-gd-1_51.lib\
        D:\3DReConstruction\CGAL-4.1\vs2010\lib\CGAL-vc100-mt-gd-4.1.lib\
 
    
然后将CGAL的一个列子拷贝进去。
 
    
#include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/convex_hull_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_2 Point_2;
int main()
{
    Point_2 points[5] = { Point_2(0,0), Point_2(10,0), Point_2(10,10),
    Point_2(6,5), Point_2(4,1) };
    Point_2 result[5];
    Point_2 *ptr = CGAL::convex_hull_2( points, points+5, result );
    std::cout << ptr - result << " points on the convex hull" <<
    std::endl;
    return 0;
}
 
    
如果你的设置没有任何问题就可以run这个程序了。如果不行,仔细检查一下你的环境变量有没有加入
 
    
 
   








智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告