記錄一下自己用vs2012編譯qt 5.2.1為靜態庫的過程,希望給能看到本文的朋友乙個參考。
解壓到目錄 qt-everywhere-opensource-src-5.2.1\
2.更改vc執行庫的配置:
vs2012對應的配置檔案是:qt-everywhere-opensource-src-5.2.1\qtbase\mkspecs\win32-msvc2012\qmake.conf
把md改為 mt, mdd改為mtd,共三處:
qmake_cflags_release = -o2 -mt
qmake_cflags_release_with_debuginfo += -o2 -mt -zi
qmake_cflags_debug = -zi -mtd
3.建立乙個批處理檔案:
比如建立乙個檔名為vs2012.build.bat的bat檔案,放到目錄qt-everywhere-opensource-src-5.2.1下面,然後進行編輯,內容如下:
configure -confirm-license -opensource -platform win32-msvc2012 -vcproj -debug-and-release -static -prefix "d:\qt\5.2.1-static" -no-opengl -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -no-angle -nomake tests -no-compile-examples
4.執行vs2012.build.bat:
首先必須要執行vs2012的批處理檔案(安裝後會有這個快捷方式):vs2012 x86 native tools command prompt.bat,這樣就開啟了乙個控制台視窗,cd到目錄qt-everywhere-opensource-src-5.2.1,再執行vs2012.build.bat, 完成後檢查是否成功,成功後就繼續下一步.
5.開始編譯:
編譯只要執行 nmake 即可,這是乙個漫長的過程,................,不出意外最後沒有任何錯誤的結束了。
6.安裝:
上述編譯成功後,只要執行 nmake install就會把最終的bin/lib/include等等相關的檔案複製到我們之前配置的目錄
d:\qt\5.2.1-static,至此靜態庫編譯就全部完成了,慶祝一下吧!
7.安裝和配置qt vs add-in:
安裝完成後執行vs2012,會多乙個"qt5"的選單,執行 "qt options"
增加新的qt版本配置:
ok後配置就完成了。
8.建立qt project進行測試,這一步很關鍵:
建立乙個qttest的qt 應用程式,開始編譯,啊,居然編譯不通過!當然不會通過,因為我們編譯的qt 5.2.1的vc執行庫是mt和mtd,工程嚮導建立的預設是md和mdd,那就改一下吧,debug版本改為:multi-threaded debug (/mtd),這下編譯終於通過了,再次,離成功又近了一步,那就趕緊run吧,然後居然彈出乙個assert視窗。
解決方法:
1. 新增qwindows.lib的路徑。
2.在工程的main.cpp中,加入如下**:
#include q_import_plugin (qwindowsintegrationplugin);3.如果要相容xp,修改vc2012的平台工具集#pragma comment (lib,"opengl32.lib")
#ifdef _debug //debug mode
#pragma comment (lib,"qt5platformsupportd.lib")
#pragma comment (lib,"qwindowsd.lib")
#else //release mode
#pragma comment (lib,"qt5platformsupport.lib")
#pragma comment (lib,"qwindows.lib")
#endif
專案-> 屬性-> 配置屬性-> 常規-> 平台工具集
選擇v110_xp
用vs2012 x86編譯的qt5.1.1,assistant無法啟動問題
被這種莫名其妙的問題卡住,很不爽,索性編了一套帶除錯資訊的release版,除錯後,發現問題是出在檔案textencodingregistry.cpp中(qt5webkit模組):
passownptrnewtextcodec(const textencoding& encoding)
上面那行
紅色的**,encoding.name()的值是"iso-8859-1",返回的factory卻是空的,導致後面呼叫它的成員函式function時直接access violation。
在網上查了一下,發現這個問題早在qt 4.8.2時就已經存在了,同樣的工具鏈(vs2012 x86),同樣的異常**:
將函式:
static void addtotextcodecmap(const char* name, newtextcodecfunction function, const void* additionaldata)
修改為:
static void addtotextcodecmap(const char* name, newtextcodecfunction function, const void* additionaldata)
}assert(atomicname);
textcodecmap->add(atomicname, textcodecfactory(function, additionaldata));
}將函式:
passownptrnewtextcodec(const textencoding& encoding)
修改為:
passownptrnewtextcodec(const textencoding& encoding)
}assert(factory.function);
return factory.function(encoding, factory.additionaldata);
}注:qt5webkit的keyvaluepair的鍵/值使用的是key/value,不是原來的first/second。
使用VS2012編譯Qt 5 5 0
安裝編譯qtwebkit所需的工具 見trac.webkit.org關於buildqtonwindows 安裝 perl,python,ruby,gnuwin32,openssl等 安裝icu庫 download icu library from 解壓縮到c icu 新增 c icu bin and...
VS2010下安裝QT5 2 1外掛程式
本人安裝的過程是根據這篇部落格來進行安裝,期間遇到一些安裝的問題,在這裡列出來。1.windows 下的qt 庫qt5.2.1 for vs2010 下的qt 外掛程式 這是修改過預設安裝路徑的 4.qt5.2.1中庫函式裡面包含的函式與之前版本的不同,所以在程式設計的時候需要謹慎,要根據新版本的函...
VS2012編譯WDM驅動
新版的vs2012中整合了wdk8,而且wdk8中已經沒有之前的build environment了,看來編譯驅動只能通過vs2012了,直接開發wdf驅動很方便直接選取相應的模板即可,若是編譯以前的wdm驅動,則需要做一下轉換,具體步驟如下 開啟vs2012,file open convert s...