各处摘录.总结下.
1.下载qt 的源代码qt-everywhere-opensource-src-4.8.5.zip,解压到路径任意,如d:\qt4
2.删除源码包中bin目录下的syncqt和syncqt.dat文件。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。
如果有perl路径应该不需要这个步骤.(未验证没有perl的话是真的需要这个步骤)
3.修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的
4.搜索整个qmake.conf文件,将-MD,-MDd对应改成-MT,-MTd,以实现在没有VC库的电脑也能运行Qt程序。
libc.lib libcd.lib libcmt.lib libcmtd.lib msvcrt.lib msvcrtd.lib
C-Release C-Debug /MT /MTd /MD /MDd
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"msvcrtd.lib" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"libcmtd.lib"
-MT 需要在 QMAKE_LCLAGS_RELEASE 后增加
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"msvcrtd.lib"
-MTd 需要在 QMAKE_LFLAGS_DEBUG 后增加
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"libcmt.lib" /NODEFAULTLIB:"msvcrtd.lib"
这6个库其实只要用其中一个.不然会有重名冲突.
后记:在你以后的工程中可能需要增加的链接。
QMAKE_LIBS_CORE 中 ws2_32.lib
QMAKE_LIBS_GUI 中 imm32.lib winmm.lib
5.VS命令行窗口下进入刚才解压路径如d:\qt4,使用如下命令生成makefile
configure -opensource -confirm-license -release -static -fast -platform win32-msvc2010 -no-qt3support -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs -mp
静态库其实没必要使用-debug 需要的话使用动态debug库代替.
-debug-and-release -static表示静态编译debug与release版本Qt.-mp表示多核同时编译。
开启"-webkit"之后,编译的时候非常久,而且,中途出现报错,问题很多,建议不要开启了
(可以肯定的是,webkit根本不支持static编译,也就是configure指定了static的时候,这个就一定编译失败)
6. VS命令行窗口下 输入nmake, 开始编译过程,此过程依机器CPU水平决定时间多少,一般耗时约2hrs。如无错误提示即实现了静态编译 。
也可以使用Jom来加速编译.(不知道编译会不会有不同.) jom -j n
7.清理临时文件
这一步很重要,关系到是否能用qt-vs-addin。(据我测试4.8.5并无影响。)
目录下.qmake.cache和configure.cache这保存着你编译时的配置。
Plugin name |
Type |
Description |
qtaccessiblecompatwidgets |
Accessibility |
Accessibility for Qt 3 support widgets |
qtaccessiblewidgets |
Accessibility |
Accessibility for Qt widgets |
qdecorationdefault |
Decorations (Qt Extended) |
Default style |
qdecorationwindows |
Decorations (Qt Extended) |
Windows style |
qgif |
Image formats |
GIF |
qjpeg |
Image formats |
JPEG |
qmng |
Image formats |
MNG |
qico |
Image formats |
ICO |
qsvg |
Image formats |
SVG |
qtiff |
Image formats |
TIFF |
qimsw_multi |
Input methods (Qt Extended) |
Input Method Switcher |
qwstslibmousehandler |
Mouse drivers (Qt Extended) |
tslib mouse |
qgfxtransformed |
Graphic drivers (Qt Extended) |
Transformed screen |
qgfxvnc |
Graphic drivers (Qt Extended) |
VNC |
qscreenvfb |
Graphic drivers (Qt Extended) |
Virtual frame buffer |
qsqldb2 |
SQL driver |
IBM DB2 |
qsqlibase |
SQL driver |
Borland InterBase |
qsqlite |
SQL driver |
SQLite version 3 |
qsqlite2 |
SQL driver |
SQLite version 2 |
qsqlmysql |
SQL driver |
MySQL |
qsqloci |
SQL driver |
Oracle (OCI) |
qsqlodbc |
SQL driver |
Open Database Connectivity (ODBC) |
qsqlpsql |
SQL driver |
PostgreSQL |
qsqltds |
SQL driver |
Sybase Adaptive Server (TDS) |
qcncodecs |
Text codecs |
Simplified Chinese (People's Republic of China) |
qjpcodecs |
Text codecs |
Japanese |
qkrcodecs |
Text codecs |
Korean |
qtwcodecs |
Text codecs |
Traditional Chinese (Taiwan) |
10.编译完即可使用vs-addin实现Qt程序的编写,且编写好的程序无需任何dlls,只是容量较大,一个简单的程序也需要10+m的空间。这时可使用 UPX 来压缩exe文件,upx压缩一下3.7M+,压缩语句如下:
Usage: upx [-123456789dlthVL] [-qvfk] [-o file] file..
Commands:
-1 compress faster -9 compress better
--best compress best (can be very slow for big files)
-d decompress -l list compressed file
-t test compressed file -V display version number
-h give this help -L display software license
Options:
-q be quiet -v be verbose
-oFILE write output to ` FILE '
-f force compression of suspicious files
--no-color, --mono, --color, --no-progress change look
Backup options:
-k, --backup keep backup files
--no-backup no backup files [ default ]
Overlay options:
--overlay=skip don't compress a file with an overlay
--overlay=copy copy any extra data attached to the file [ default ]
--overlay=strip strip any extra data attached to the file [dangerous]
Options for dos/exe:
--8086 make compressed exe work on any 8086
--no-reloc put no relocations in to the exe header
Options for dos/com:
--8086 make compressed com work on any 8086
Options for dos/sys:
--8086 make compressed sys work on any 8086
Options for djgpp2/coff:
--coff produce COFF output [ default : EXE]
Options for watcom/le:
--le produce LE output [ default : EXE]