Windows下編寫的QT程序拿到別的機器上運行時總是要打包DLL,編譯成靜態(tài)程序更方便一些。
首先要編譯一個靜態(tài)的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選項對核心庫無效,核心庫仍然是動態(tài)鏈接的。另外-Zi也可以去掉,不生成pdb文件,如果不調試Qt內部就沒必要要。
執(zhí)行:
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
這樣最終生成的程序就是靜態(tài)程序了,拿到沒有QT庫的機器上也可以運行了。