Windows下編寫的QT程序拿到別的機(jī)器上運(yùn)行時(shí)總是要打包DLL,編譯成靜態(tài)程序更方便一些。
首先要編譯一個(gè)靜態(tài)的Qt庫(kù),因?yàn)閙s的連接器需要.lib庫(kù),而qt自帶的是.a庫(kù),所以要下載代碼自己編譯了。
編譯前先修改一下spec:(下面是對(duì)于vs2008,如果是2005,則去找win32-msvc2005)
mkspecs ----> win32-msvc2008 ----> qmake.conf
修改QMAKE_CFLAGS_RELEASE = -O2 -MD 為QMAKE_CFLAGS_RELEASE = -O2 -MT
修改QMAKE_CFLAGS_DEBUG 為 = -Zi -MTd
修改這兒是因?yàn)镼t configure時(shí)的static選項(xiàng)對(duì)核心庫(kù)無(wú)效,核心庫(kù)仍然是動(dòng)態(tài)鏈接的。另外-Zi也可以去掉,不生成pdb文件,如果不調(diào)試Qt內(nèi)部就沒必要要。
執(zhí)行:
configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit
nmake
等待個(gè)1,2小時(shí)的編譯,生成一堆的.lib文件。
如果需要webkit就不要加-no-webkit參數(shù)
在vs中修改工程的屬性:
配置屬性 ----> C/C++ ----> 代碼生成 ---->運(yùn)行時(shí)庫(kù) ----> /MT or /MTd
這樣最終生成的程序就是靜態(tài)程序了,拿到?jīng)]有QT庫(kù)的機(jī)器上也可以運(yùn)行了。