MinGW下静态编译、链接Qt 5.0
生活随笔
收集整理的這篇文章主要介紹了
MinGW下静态编译、链接Qt 5.0
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
本文討論的將是MinGW之上的靜態(tài)編譯 ,并且將拋開萬年難伺候的QtWebkit進(jìn)行編譯。一、編譯Qt 5.0
與Qt 4.x不同的地方:
1、Qt 5.0比以往相比,需要有perl環(huán)境。因此要在你的環(huán)境變量中添加perl。
2、configure當(dāng)中去除了一些參數(shù),比如no-webkit,同時(shí)又添加了一些,比如icu。
3、Webkit和QtCore都需要ICU。ICU是一個(gè)處理unicode的庫,如果你沒有準(zhǔn)備,webkit的編譯自動(dòng)跳過,core的編譯使用其它方法避開ICU。
4、由于QPA的存在,與平臺(tái)相關(guān)的部分被抽象成了插件,這個(gè)后面再說。
5、默認(rèn)啟用了ANGLE作為OpenGL 和DirectX之間的橋梁,如果你沒有準(zhǔn)備ANGLE,需要額外的-opengl desktop參數(shù)
6、默認(rèn)支持C++11?;诖?#xff0c;推薦使用支持C++11的編譯器。我這里使用的是TDM的32位版本,有興趣的可以在這里找到: http://tdm-gcc.tdragon.net/
靜態(tài)編譯Qt最基本的需要將gcc的幾個(gè)dll變成靜態(tài)鏈接,因?yàn)槲沂褂昧薚DM,所以沒有這方面的后顧之憂,如果你使用原始的gcc,是需要修改mkspecs中的make.conf的,給gcc傳入?yún)?shù)-static -static-libgcc的。
同時(shí)也請(qǐng)注意,如果你需要一同編譯debug版本,不要編譯靜態(tài)的。
我所使用的configure:
configure -release -opensource -qmake -prefix "..\qt5\qt5-x86-static" -c++11 -platform win32-g++ -qt-zlib -qt-libpng -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -nomake tests -nomake demos -nomake examples -opengl desktop
二、靜態(tài)鏈接
Qt 5.0重新翻修了插件部分,并且修改了部分宏的作用,以及上面提及的第4點(diǎn)。因此,和Qt 4.x的鏈接有些不同,我們需要在自己的pro當(dāng)中這樣寫:
CONFIG+=static
static{
? ? ? ? QTPLUGIN+=qwindows qico
? ? ? ? DEFINES+=QT_PLUGIN_STATIC_LINK
? ? ? ? LIBS+=-L"$(QTDIR)/plugins/platforms"
? ? ? ? LIBS+=-L"$(QTDIR)/plugins/imageformats"
? ? ? ? message("Staticbuild.")
}
這里說明一下。這個(gè)qmake片段只在static時(shí)候執(zhí)行。因?yàn)榍懊嫣氐貙懥薈ONFIG+=static的關(guān)系,這里的static{}才得以執(zhí)行。QTPLUGIN宏引入兩個(gè)插件,這使得這兩個(gè)庫將被納入鏈接;DEFINES定義了一個(gè)宏,這個(gè)宏我們需要在代碼 中用到;LIBS兩行分別引入兩個(gè)插件庫的路徑;最后一行是個(gè)提示語。
現(xiàn)在,打開main.cpp或者新建一個(gè)cpp,寫入如下內(nèi)容:
#ifdefQT_PLUGIN_STATIC_LINK
#include<QtCore/QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
Q_IMPORT_PLUGIN(QICOPlugin);
#endif
注意,這里就是和Qt 4.x最大的不同。原有的Q_IMPORT_PLUGIN宏需要的是插件名,而從Qt5開始則變成了插件的類名。另外這里的分號(hào)是我額外加上的,不加也可以,但Qt Creator會(huì)提示有問題。
這里面的qwindows對(duì)應(yīng)的就是QWindowsIntegrationPlugin,而qico對(duì)應(yīng)的則是QICOPlugin。
現(xiàn)在程序應(yīng)該可以正常鏈接、運(yùn)行了。
三、參考
http://www.formortals.com/build- ... intel-gcc-compiler/
http://www.formortals.com/how-to-statically-link-qt-4/
http://lists.qt-project.org/pipe ... 12-July/000401.html
https://bugreports.qt-project.org/browse/QTBUG-24496
https://github.com/lordmulder/La ... eff8bc03a2eff2f4111
https://blog.qt.digia.com/blog/2 ... -library-with-qt-2/
轉(zhuǎn)載于:https://my.oschina.net/mickelfeng/blog/102034
總結(jié)
以上是生活随笔為你收集整理的MinGW下静态编译、链接Qt 5.0的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打开sa属性报错
- 下一篇: [题解]CQOI2012 T2 组装 a