动机:因为官网的QT安装包是64位的,于是要做一个本地的32位的
这里仅仅做动态连接库,先不做静态编译,静态编译一堆破问题,后面再说。
动态编译
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
2. Python 2.7 or later
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的用户环境变量:
- ICU_DIR =C:\icu
- include= %ICU_DIR%\include
- lib=%ICU_DIR%\lib
- Path=%ICU_DIR%\bin
ICU_DIR =C:\icu
include= %ICU_DIR%\include
lib=%ICU_DIR%\lib
Path=%ICU_DIR%\bin
然后把C:\icu\lib里面的lib文件都复制一份到本地,重命名得到如下:
- 2013/05/12 11:10 1,684 sicudt.lib
- 2013/05/12 11:12 1,216,950 sicuin.lib
- 2013/05/12 11:08 1,219,934 sicuind.lib
- 2013/05/12 11:12 12,618 sicuio.lib
- 2013/05/12 11:08 12,674 sicuiod.lib
- 2013/05/12 11:11 54,856 sicule.lib
- 2013/05/12 11:06 54,978 siculed.lib
- 2013/05/12 11:11 54,688 siculx.lib
- 2013/05/12 11:07 54,880 siculxd.lib
- 2013/05/12 11:12 33,574 sicutest.lib
- 2013/05/12 11:08 33,688 sicutestd.lib
- 2013/05/12 11:12 65,054 sicutu.lib
- 2013/05/12 11:08 65,296 sicutud.lib
- 2013/05/12 11:11 791,758 sicuuc.lib
- 2013/05/12 11:06 794,480 sicuucd.lib
2013/05/12 11:10 1,684 sicudt.lib
2013/05/12 11:12 1,216,950 sicuin.lib
2013/05/12 11:08 1,219,934 sicuind.lib
2013/05/12 11:12 12,618 sicuio.lib
2013/05/12 11:08 12,674 sicuiod.lib
2013/05/12 11:11 54,856 sicule.lib
2013/05/12 11:06 54,978 siculed.lib
2013/05/12 11:11 54,688 siculx.lib
2013/05/12 11:07 54,880 siculxd.lib
2013/05/12 11:12 33,574 sicutest.lib
2013/05/12 11:08 33,688 sicutestd.lib
2013/05/12 11:12 65,054 sicutu.lib
2013/05/12 11:08 65,296 sicutud.lib
2013/05/12 11:11 791,758 sicuuc.lib
2013/05/12 11:06 794,480 sicuucd.lib
5、开始编译:
1、开启msvc 2012的cmd进入E:\Qt_compl\qt-src-5.0.2,开始配置,需要指定-opengl desktop,因为设计到一个把opengl转化为d3d的库,这么配置就是不使用这块了:
- 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
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
2、编译结束的时候,输入nmake install,就会讲安装的东西复制到c:\qt,但是会提示报错:
- 已复制 1 个文件。
- copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\russian.qph c:\qt\phrasebooks
- 已复制 1 个文件。
- copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\spanish.qph c:\qt\phrasebooks
- 已复制 1 个文件。
- copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\swedish.qph c:\qt\phrasebooks
- 已复制 1 个文件。
- copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsConfig.cmake c:\qt\lib\cmake\Qt5LinguistTools
- 已复制 1 个文件。
- copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsMacros.cmake c:\qt\lib\cmake\Qt5LinguistTools
- 已复制 1 个文件。
- 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
- " -f Makefile install
- Microsoft (R) Program Maintenance Utility Version 11.00.50727.1
- Copyright (C) Microsoft Corporation. All rights reserved.
- NMAKE : fatal error U1073: don't know how to make 'install'
- Stop.
- NMAKE : fatal error U1077: 'cd' : return code '0x2'
- Stop.
- E:\Qt_compl\qt-src-5.0.2>
已复制 1 个文件。 copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\russian.qph c:\qt\phrasebooks 已复制 1 个文件。 copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\spanish.qph c:\qt\phrasebooks 已复制 1 个文件。 copy /y E:\Qt_compl\qt-src-5.0.2\qttools\src\linguist\phrasebooks\swedish.qph c:\qt\phrasebooks 已复制 1 个文件。 copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsConfig.cmake c:\qt\lib\cmake\Qt5LinguistTools 已复制 1 个文件。 copy /y E:\Qt_compl\qt-src-5.0.2\qttools\lib\cmake\Qt5LinguistTools\Qt5LinguistToolsMacros.cmake c:\qt\lib\cmake\Qt5LinguistTools 已复制 1 个文件。 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 " -f Makefile install Microsoft (R) Program Maintenance Utility Version 11.00.50727.1 Copyright (C) Microsoft Corporation. All rights reserved. NMAKE : fatal error U1073: don't know how to make 'install' Stop. NMAKE : fatal error U1077: 'cd' : return code '0x2' Stop. E:\Qt_compl\qt-src-5.0.2>
3、进入E:\Qt_compl\qt-src-5.0.2,把这个文件夹下面的makefile给修改了:
- 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
- 去掉module-qtwebkit-examples-and-demos-install_subtargets
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 去掉module-qtwebkit-examples-and-demos-install_subtargets
4、再执行nmake install
整个编译过程就OK了。
6、编译和安装文档,如果不做这一步,那么C:\Qt\bin,目录下面的assistance.exe将是没有文档索引的
1、编译文档:
- E:\Qt_compl\qt-src-5.0.2>nmake docs
E:\Qt_compl\qt-src-5.0.2>nmake docs
2、安装文档:
- E:\Qt_compl\qt-src-5.0.2>nmake install_docs
E:\Qt_compl\qt-src-5.0.2>nmake install_docs
静态编译
首先静态编译有些东西不能编译的,webkit,以及webkit的文档,也就不要带icu编译了,这个东西是webkit用的。编译静态的Qt lib库,动作和动态编译一致,但是配置的configure需要做修改,然后configure之后生成的修改修改Makefile。
1、重新指定configure配置:
- E:\Qt_compl\qt-src-5.0.2-static>configure -prefix c:\qt-static -debug-and-release -static -platform win32-msvc2012 -c++11 -no-icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp
E:\Qt_compl\qt-src-5.0.2-static>configure -prefix c:\qt-static -debug-and-release -static -platform win32-msvc2012 -c++11 -no-icu -opengl desktop -qt-sql-sqlite -qt-zlib -qt-style-windowsvista -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tests -mp
2、configure结束之后,然后输入nmake之后,不要nmake,先修改根目录下面的Makefile,去除webkit部分,修改之后的部分如下:
- make_first: module-qtbase-make_first module-qtsvg-make_first module-qtxmlpatterns-make_first module-qtjsbackend-make_first module-qtdeclarative-make_first module-qtmultimedia-make_first module-qtactiveqt-make_first module-qttools-make_first module-qtimageformats-make_first module-qtgraphicaleffects-make_first module-qtscript-make_first module-qtquick1-make_first module-qttranslations-make_first module-qtdoc-make_first FORCE
make_first: module-qtbase-make_first module-qtsvg-make_first module-qtxmlpatterns-make_first module-qtjsbackend-make_first module-qtdeclarative-make_first module-qtmultimedia-make_first module-qtactiveqt-make_first module-qttools-make_first module-qtimageformats-make_first module-qtgraphicaleffects-make_first module-qtscript-make_first module-qtquick1-make_first module-qttranslations-make_first module-qtdoc-make_first FORCE
3、nmake
4、再次修改Makefile,把install对应的部分,删除webkit部分,修改后如下:
- 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-qttools-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
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-qttools-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
5、nmake install
6、这种静态编译暂时只支持Qt Creator IDE,不支持Msvc 2012,因为vc会提示:
Qt application: Failed to load platform plugin “windows”.
转自:
http://blog.csdn.net/ztz0223/article/details/8917182