Windows下编写的QT程序拿到别的机器上运行时总是要打包DLL,编译成静态程序更方便一些。
首先要编译一个静态的Qt库,因为ms的连接器需要.lib库,而qt自带的是.a库,所以要下载代码自己编译了。
编译前先修改一下spec:(下面是对于vs2008,如果是2005,则去找win32-msvc2005)
mkspecs ----> win32-msvc2008 ----> qmake.conf
修改QMAKE_CFLAGS_RELEASE = -O2 -MD 为QMAKE_CFLAGS_RELEASE = -O2 -MT
修改QMAKE_CFLAGS_DEBUG 为 = -Zi -MTd
修改这儿是因为Qt configure时的static选项对核心库无效,核心库仍然是动态链接的。另外-Zi也可以去掉,不生成pdb文件,如果不调试Qt内部就没必要要。
执行:
configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit
nmake
等待个1,2小时的编译,生成一堆的.lib文件。
如果需要webkit就不要加-no-webkit参数
在vs中修改工程的属性:
配置属性 ----> C/C++ ----> 代码生成 ---->运行时库 ----> /MT or /MTd
这样最终生成的程序就是静态程序了,拿到没有QT库的机器上也可以运行了。