以下为本人
编译的Qt5.0.0 MSVC2012版(Express with Update 1),与各位分享一下。不过目测Qt5.0.1也快来了吧……
两个版本皆不包括QtWebKit,因为
没有准备ICU;OpenSSL也是用了取巧一点的方法,没有实际编译(openssl-1.0.1c),只是将它的头
文件放在了编译器可以搜索到的地方,这样Network模块应该启用了OpenSSL支持,只要运行时提供SSL的dll就好;OpenGL为desktop,未启用ANGLE;二者皆通过修改mkspecs来达到优化体积,并且静态链接msvcrt。
尚未在
其他的机器上进行测试,但是从Qt4的情况来看,需要自己在qmake.exe同级文件夹中创建一个qt.conf文件,在其中写入
[Paths]
Prefix = 【你的Qt路径】
来替换掉qmake和Qt dll中硬编码进去的我的Qt路径,具体可参考
http://qt-project.org/doc/qt-4.8/qt-conf.html 。最后执行qmake.exe -query来确认一下返回的各种路径的的确确对应你的Qt5的位置。
如果下载解压缩完下面的Qt5发现不能用,请务必再确认一遍上面这段的内容。首先是64位版(未启用XP支持,Windows 7 Ultimate SP1 x64下测试没发现问题)百度网盘 Qt5.0.0-MSVC2012-x64 我的configure参数(我把自己能明白的参数都给加上了,即使是默认开启的)
-prefix "E:\Qt5.0.0-MSVC2012-x64" -release -opensource -c++11 -shared -ltcg -fast -nomake demos -nomake tests -nomake examples -accessibility -opengl desktop -platform win32-msvc2012 -qt-zlib -qt-pcre -no-icu -qt-libpng -qt-libjpeg -qt-freetype -no-angle -no-vcproj -sse2 -sse3 -ssse3 -sse4.1 -sse4.2 -avx -avx2 -openssl -no-qml-debug -native-gestures -mp
同时我也对mkspecs做了修改
QMAKE_CFLAGS_RELEASE中,-O2改为-O1,优化大小;-MD改为-MT,静态链接vcrt;其它条目中的O2和-MD/MDd也都做了修改。
QMAKE_LFLAGS中,/DYNAMICBASE改为/DYNAMICBASE:NO,这东西是为了防止反编译而设计的,关掉可以减少体积,具体参考微软的文档。
之后是32位版(启用了XP支持,Windows 7 XP Mode下测试没发现问题)百度网盘 Qt5.0.0-MSVC2012-x86 我的configure参数
-prefix "E:\Qt5.0.0-MSVC2012-x86" -release -opensource -c++11 -shared -ltcg -fast -nomake demos -nomake tests -nomake examples -accessibility -opengl desktop -platform win32-msvc2012 -qt-zlib -qt-pcre -no-icu -qt-libpng -qt-libjpeg -qt-freetype -no-angle -no-vcproj -sse2 -sse3 -ssse3 -sse4.1 -sse4.2 -avx -avx2 -openssl -no-qml-debug -native-gestures -mp
对于mkspecs的修改更多一些
对于O1和MT等条目的修改同64位版
另外QMAKE_COMPILER_DEFINES中,添加_USING_V110_SDK71_
QMAKE_LFLAGS_CONSOLE改为/SUBSYSTEM:CONSOLE,5.01
QMAKE_LFLAGS_WINDOWS改为/SUBSYSTEM:WINDOWS,5.01
但是,想编译XP下能跑的程序,还需要额外设置一些环境变量。VC构建时的环境变量都是通过vcvarsall.bat、vcvars32.bat和vcvarsx86_amd64.bat等实现的,QtCreator可以自动探测到他们的存在。因此我又写了那个vc110xp.bat来进行额外的环境变量设置,之后通过以下步骤来让QtCreator意识到vc110xp.bat的存在,这样就可以在Creator中点一下run就能构建了:
1.进入%AppData%\QtProject\qtcreator文件夹
2.打开toolchains.xml(建议先将其备份一份)
3.其中会找到类似这样的
数据块
<data>
<variable>ToolChain.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.MsvcToolChain.SupportedAbi">x86-windows-msvc2012-pe-32bit</value>
<value type="QString" key="ProjectExplorer.MsvcToolChain.VarsBat">E:\VS2012\VC\bin\vcvars32.bat</value>
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">true</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Microsoft Visual C++ Compiler 11.0 (x86)</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Msvc:{d7a402b2-081d-449e-b67f-1d602b3f7e29}</value>
</valuemap>
</data>
4.我们先复制出来这么一个数据块在这段内容的末尾,然后修改:
“ToolChain.0”中的0为下一个工具链的索引编号;
“key="ProjectExplorer.MsvcToolChain.SupportedAbi"”这一行确认一下ABI是不是x86-windows-msvc2012-pe-32bit;
“key="ProjectExplorer.MsvcToolChain.VarsBat"”这一行为vc110xp.bat的绝对路径;
“key="ProjectExplorer.ToolChain.Autodetect"”这一行为false;
“key="ProjectExplorer.ToolChain.DisplayName"”这一行自己根据自己的情况进行修改,可以随便改个名字;
“key="ProjectExplorer.ToolChain.Id"”这一行,目前来看就是个UUID,可以用QUuid::createUuid()来生成;我是随便把这串代码修改了几位,与其他的编译器的ID不冲突,然后没发现问题。我的ID是“d7a402b2-081d-449e-b67f-1d602b3f7e30”
5.找到类似这一块
<data>
<variable>ToolChain.Count</variable>
<value type="int">9</value>
</data>
将工具链的数量改为自己实际情况的数量。
6.保存,QtCreator中检查测试一下。
以上QtCreator的配置比较复杂,各位请自行斟酌。
因为这里比较热闹所以就先发这里了,如果老大觉得不合适就请放到
安装与发布区吧