装CGAL与解决"QWidget: Must construct a QApplication before a QPaintDevice". 问题

http://www.qtcn.org/bbs/apps.php?q=diary&uid=111650&a=detail&did=52

装CGAL与解决"QWidget: Must construct a QApplication before a QPaintDevice". 问题

2011-06-22 17:37
一、安装CGAL需要boost,qt的库,我是在win7下装的

1)、首先下载CGAL(3.8)的安装程序,从 https://gforge.inria.fr/frs/?group_id=52(在页面的最下面)

2)、获得最新版本的CMake(目前是2.8),从 http://www.cmake.org/cmake/resources/software.html

3)、获得最新版本的QT(目前是4.7),从 http://www.qtsoftware.com/downloads/windows-cpp
下载sdk在windows下的版本。
4)、获得最新版本的boost从 http://www.boost.org/users/download/ ,或者是从 http://www.boostpro.com/download 这里下载window的安装程序
二、编译Boost
1)下载Boost
      首先,我们到 http://www.boost.org去下载 boost的代码包。 解压到一个源代码目录下。
2)获取编译工具
     首先,我们需要到bjam.exe这是一个用于编译的工具。

     接下来我将会在Visual Studio 2008 SP1简体中文专业版中编译boost_1_46_1。我们去开始菜单,使用管理员身份运行Visual Studio 2008 命令提示(非Vista请无视):
3)然后我们通过cd等DOS指令进入到:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:Windowssystem32>e:

D:>cd boost_1_46_1

D: boost_1_46_1>cd tools

D: boost_1_46_1tools>cd build

D: boost_1_46_1toolsjam>cd v2
如此打开文件夹
(最新版本是在E:Program Filesboost_1_46_1toolsbuildv2enginesrc)下寻找
然后我们在这个src目录下面执行build.bat:

E:Program Filesboost_1_46_1toolsbuildv2enginesrc>build.bat

然后我们稍等一小会儿等待系统自动为我们生成编译工具。

生成完毕之后E:Program Filesboost_1_46_1toolsbuildv2enginesrc目录下会出现一个bin.ntx86目录。进入这个目录会看见bjam.exe。


三、编译boost
我们把这个bjam.exe拷贝到boost_1_46_1源文件的根目录即我的E:Program Filesboost_1_46_1

同上面的方法打开Visual Studio 2008 命令提示,进入E:boostSDK。通过如下命令我们就可以查看当前版本的Boost的哪些组件需要编译了,因为Boost大部分组件都是以模板的形式存在的,不需要编译:

D: boost_1_46_1>bjam --show-libraries

The following libraries require building:

    - date_time

    - filesystem

    - function_types

    - graph

    - iostreams

    - math

    - mpi

    - program_options

    - python

    - regex

    - serialization

    - signals

    - system

    - test

    - thread

- wave
   D: boost_1_46_1>bjam install --toolset=msvc --prefix="D:E:boostSDK" debug --build-type=complete
但是他不会安装到你的文件夹中,而是在对应的根目录下创建了一个E:boostSDKdebug文件夹,但是没关系,等他编译完我们就再拷贝到这个文件夹中
剩下的参数都用默认的了。敲下回车,好了,开始耐心等待编译完成吧。在此之前请确认您的D盘的剩余空间,要完整编译需要大约3G的剩余空间,主要是会生成很多临时文件,编译连接完之后我们可以删除掉的。曾经在网上看到说需要12G的空间,编译需要好几个小时,可能是现在不一样了吧,呵呵,电脑配置越来越好了。而且整个编译过程也需要一定的时间,编译Debug版本大约需要40-80分钟不等,Release也差不多,根据不同的机器配置会有所不同,当然配置越好越快啦。
大家可以看看Boost生成的这些Lib文件,比如boost_regex-vc90-mt-gd- 1_46_1.lib。它的命名很考究的。
boost代表这是boost库的组件
regex代表这个是正则表达式的库
VC90代表它是什么编译器版本
mt代表它支持多线程/ Multithreads
gd代表这是debug版本 (测试)
1_46_1代表了Boost的版本号
为了符合我们通常SDK的习惯,我们把E:Program Filesboost_1_46_1下面的boost目录全部拷贝到include目录下面。如图:
   现在我们的所有头文件都在include文件夹下面了,保留boost文件夹只是为了符合boost的习惯;所有的lib和dll都位于lib文件夹下面。
但是整个过程还没有结束,我们还需要配置IDE。打开Visual Studio 2008 SP1(其它VC开发平台也类似),选择“工具”,再选择“选项”,然后在“项目和解决方案”下面选择vc++目录,在“包含目录”下面添加Boost的include路径:
然后在系统环境变量下添加库和头文件。



四.安装Qt
由于我的Qt是官网下直接下的二进制文件,所以安装玩了之后。注意向上图一样添加他的头文件即可:即添加环境变量:E:Qt4.7.1bin   E:Qt4.7.1include   E:Qt4.7.1lib
五、配置编译器(VS2008)
库文件先写上以下的路径,到时候怕忘了


头文件也如下:

六、配置事例程序需要的的第三方库QGLViewer

去官网上下载QGLViewer(网址 http://www.libqglviewer.com/installWindows.html)下载编译版本,从源文件开始进行编译。(下载的二进制文件,会在后面丢失库,推荐自己编译二进制文件库,反正也不大啦)。
下载Qt的vs2008的编译助手,网站 http://qt.nokia.com/downloads-cn,网址的最右下角落,然后安装他。
解压代码QGLViewer的源文件,然后你会看到QGLViewer/QGLViewer.pro,用vs2008的Qt助手打开这个文件(跟CMAKE同样的功能),然后出先很多个工程,只要编译出QGLViewer既可以。
在vs2008下编译Debug和Release版本。然后找出这些文件按下图放置:库文件
将e:ibQDLViewerSDK和e:ibQDLViewerSDKlib,添加到环境变量path中。
七、安装Cmake进行编译cgal
首先安装cmake,全部默认设置,直到安装完成。
然后CGAL-3.8-Setup.exe安装运行,选好你的安装目录即可,别的不用去管,注意这里需要网络的支持,让他下载其他第三方库,例如我安装文件夹:E:Program FilesCGAL-3.8。
确认你的环境变量是否包含了如下的目录(或者类似功能的目录),当然不是得完全一致啦,本文说了什么库,那就有什么库。。。
%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:Program FilesCommon FilesThunder NetworkKanKanCodecs;C:Program FilesATI TechnologiesATI.ACECore-Static;E:Qt4.7.1bin;e:Program FilesCMake 2.8bin;E:boostSDKincludeboost;E:boostSDKlib;E:Program FilesCGAL-3.8include;E:Program FilesCGAL-3.8auxiliarygmpinclude;E:Program FileslibQGLViewerQGLViewer;E:libQGLViewerSDKlib;E:libQGLViewerSDK;E:Qt4.7.1lib;C:Program FilesMicrosoft SDKsWindowsv6.0A;E:Program FilesCGAL-3.8lib;e:Program FilesCGAL-3.8auxiliarygmplib
点击桌面上cmake的图标,在最上方的地址栏下输入你的cgal的安装目录,E:Program FilesCGAL3.8和输出目录E:Program FilesCGAL3.8


接着,我们修改里面的参数,如下:

注意:
1、如果你安装了Cygwin,configure将失败,编辑GMP_INCLUDE_DIR和MPFR_INCLUDE_DIR为C:/CGAL/CGAL-3.5/auxiliary/gmp/include
2、编辑CMAKE_BUILD_TYPE为Debug
3、如果你希望安装演示实例,请选择WITH_demos与WITH_examples(其实没有必要安装,可以用的时候再编译)
4、你需要增加变量Boost_INCLUDE_DIR, 并且编辑变量Boost_THREAD_LIBRARY_DEBUG (libboost_thread-vc90-mt-gd-1_46_1.lib) 以及变量Boost_THREAD_LIBRARY_RELEASE (libboost_thread-vc90-mt-1_46_1.lib)
5)、点击Configure,知道Generate能够操作之后,点击Generate
6)、在C:CGALCGAL-3.5中将会产生一个解决方法,用Visual Studio打开
7)、关闭CMAKE
8)、选择 Build->Clean Solution,选择 Build->Rebuild Solution。安装完成。
八、安装编译事例程序编译他的事例代码时候,二维显示用的是QT的图像框架,三维浏览是用了QT的第三方库QGLViewer,所以编译代码时,有可能还需要在选项中加上
最后。事例中在Cmake中是debug版本,那么vs2008中也只能debug版本编译,不能用发行版本编写,是release版本,也只能用release版本。
最后我运行的一个事例:
最后,如果不按照上面说的匹配上(发布版本对发布版本,测试版本对测试版本),那么将在命令行出现:
"QWidget: Must construct a QApplication before a QPaintDevice". 的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值