Qt5学习笔记——64位 or 32位

 

      在重新采用Qt开发界面之前,碰到的第一个问题就是操作系统平台的问题。现在项目组已经同意采用了X64平台,于是我将之前用Qt4.8.2编写的程序在X64的环境下进行编译,发现报错fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突。上网搜寻资料发现,在Windows平台下,Qt只有32位的安装文件,要编译64位的Qt程序,必须将Qt的源码进行64位编译并生成相应的bin、include、lib文件夹。又经过一番资料搜寻后,我终于发现了目前Qt项目的下载页面:http://qt-project.org/downloads

 

    在最下面一行中,居然有Windows64位的Qt安装程序,一阵大喜之后,后面的几个字母顿时将我的喜悦都浇没了。我嘞个去,居然是VS2012的,上面的安装文件都是在VS2010的环境下,为什么要弄个VS2012的呢?真搞不懂Qt在想什么?开来只有自己下载Qt的源码进行64位编译了。

 

    我的编译过程主要参照博客http://blog.csdn.net/ztz0223/article/details/8917182,只进行了动态编译,主要步骤和参照的那篇博客一样:

1、下载源代码:

qt-everywhere-opensource-src-5.0.2.zip

2、解压到E:\Qt_compl,重命名文件夹为qt-src-5.0.2

3、安装依赖的工具,安装的时候都要注意添加到系统path,会有对话框弹出的时候勾选即可:

1. Perl 5.8 or later

x86 http://www.activestate.com/activeperl/downloads/thank-you?dl=http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi 

amd64 http://www.activestate.com/activeperl/downloads/thank-you?dl=http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-MSWin32-x64-296746.msi 

2. Python 2.7 or later

x86 http://www.activestate.com/activepython/downloads/thank-you?dl=http://downloads.activestate.com/ActivePython/releases/2.7.2.5/ActivePython-2.7.2.5-win32-x86.msi 

amd64 http://www.activestate.com/activepython/downloads/thank-you?dl=http://downloads.activestate.com/ActivePython/releases/2.7.2.5/ActivePython-2.7.2.5-win64-x64.msi

3. Ruby

amd64 http://rubyforge.org/frs/download.php/76806/rubyinstaller-2.0.0-p0-x64.exe 

4、安装ICU,http://download.qt-project.org/development_releases/prebuilt/icu/src/icu4c-51_1-src.zip,解压然后,我的路径是:E:\QT Dev\安装包\5.0\icu,然后用vs2012打开文件E:\QT Dev\安装包\5.0\icu\source\allinone\allinone.sln,然后分别以debug和release模式编译一次。然后把E:\QT Dev\安装包\5.0\icu文件夹拷贝到C:\icu下面去,仅仅保留bin;include;lib三个文件夹。其他都删除。然后添加系统环境变量,我这里是添加到administrator的用户环境变量:

  1. ICU_DIR =C:\icu  
  2. include= %ICU_DIR%\include  
  3. lib=%ICU_DIR%\lib  
  4. Path=%ICU_DIR%\bin 

    注意在第四步中,Path中添加的是%ICU_DIR%\bin,而不是新建一个Path,因为原本就已经有了一个Path(我就犯了这个错误^_^),同时将这些变量添加到用户变量中,而不是环境变量中!

5、开始编译:

1、开启msvc 2012的cmd进入E:\Qt_compl\qt-src-5.0.2,开始配置,需要指定-opengl desktop,因为设计到一个把opengl转化为d3d的库,这么配置就是不使用这块了:

  1. E:\Qt_compl\qt-src-5.0.2>configure -prefix c:\qt -debug-and-release -platform win32-msvc2012 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp  

    置于configure -prefix c:\qt -debug-and-release -platform win32-msvc2012 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp 这句话代表的含义,可以输入configure -help查看每个模块的定义,这句话主要是用来设置需要编译哪些模块。其中c:\qt为编译之后的目录,可以自定义。我是采用VS2010进行64位的编译,因此上面一句话应该改为:

configure -prefix D:\Qt\5.0.2 -debug-and-release -platform win32-msvc2010 -c++11  -icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp  

    【更多关于configure的设置,可以参考博客:http://www.cnblogs.com/liff-engineer/archive/2013/05/20/3088740.html

    之后继续进行下面的步骤……

2、编译结束的时候,输入nmake install,就会讲安装的东西复制到c:\qt,但是会提示报错:

  1. 已复制         1 个文件。  
  2.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\russian.qph c:\qt\phrasebooks  
  3. 已复制         1 个文件。  
  4.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\spanish.qph c:\qt\phrasebooks  
  5. 已复制         1 个文件。  
  6.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\swedish.qph c:\qt\phrasebooks  
  7. 已复制         1 个文件。  
  8.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsConfig.cmake c:\qt\lib\cmake\Qt5LinguistTools  
  9. 已复制         1 个文件。  
  10.         copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsMacros.cmake c:\qt\lib\cmake\Qt5LinguistTools  
  11. 已复制         1 个文件。  
  12.         cd qtwebkit-examples-and-demos\ && ( if not exist Makefile E:\Qt_compl\qt-src-5.0.2\qtbase\bin\qmake E:\Qt_compl\qt-src-5.0.2\qtwebkit-examples-and-demos\qtwebkit-examples-and-demos.pro -o Makefile ) && "D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\nmake.exe  
  13. " -f Makefile install  
  14. Microsoft (R) Program Maintenance Utility Version 11.00.50727.1  
  15. Copyright (C) Microsoft Corporation.  All rights reserved.  
  16. NMAKE : fatal error U1073: don't know how to make 'install'  
  17. Stop.  
  18. NMAKE : fatal error U1077: 'cd' : return code '0x2'  
  19. Stop.  
  20. E:\Qt_compl\qt-src-5.0.2>  

3、进入E:\Qt_compl\qt-src-5.0.2,把这个文件夹下面的makefile给修改了:

  1. install_subtargets: module-qtbase-install_subtargets module-qtsvg-install_subtargets module-qtxmlpatterns-install_subtargets module-qtjsbackend-install_subtargets module-qtdeclarative-install_subtargets module-qtmultimedia-install_subtargets module-qtactiveqt-install_subtargets module-qtwebkit-install_subtargets module-qttools-install_subtargets module-qtwebkit-examples-and-demos-install_subtargets module-qtimageformats-install_subtargets module-qtgraphicaleffects-install_subtargets module-qtscript-install_subtargets module-qtquick1-install_subtargets module-qttranslations-install_subtargets module-qtdoc-install_subtargets FORCE  
  2.   
  3. 去掉module-qtwebkit-examples-and-demos-install_subtargets   

4、再执行nmake install

整个编译过程就OK了。

 6、编译和安装文档,如果不做这一步,那么C:\Qt\bin,目录下面的assistance.exe将是没有文档索引的

1、编译文档:

  1. E:\Qt_compl\qt-src-5.0.2>nmake docs  

2、安装文档:

  1. E:\Qt_compl\qt-src-5.0.2>nmake install_docs  

    整个编译过程大概持续两个小时,汗!

    到此,64位的Qt5.0.2动态编译就全部结束了,在我的Qt的安装目录下,生成了938M的文件,下面来试试能不能编译64位的Qt程序……

    等一下,还得把qt-vs-addin-1.2.1-opensource.exe安装一下~^_^

 

    进入VS2010后,在Qt5中点击Qt Options,在Qt Versions选项卡中添加Qt5.0.2的版本,我的是这样子的:

    新建了一个Qt程序,进行64位编译之后发现,报了如下错误:

There's no Qt version assigned to this project for platform Win32.

Please use the 'change Qt version' feature and choose a valid Qt version for this platform.

    Oh My God!难道我花了两个小时编译的64位Qt不能用!还是不死心,最后又是通过搜寻,发现了解决的方法:还是在Qt5选项中,选择Qt Project Settings,在Version那一栏中,指定为5.0.2,我的页面如下:

    再次编译,发现已经可以成功编译为64位的Debug和Release版本,OK好好享受吧!~^_^

 

转载于:https://www.cnblogs.com/ppffs/p/3147703.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值