背景:
最近用vs2012越來越愛不釋手。但是qt只提供vs2010的官方的安裝包,暫時還不支援新版本的vs。於是,我需要手動用編譯qt4.8.2。過程也不複雜寫下來做個記錄吧。
說明:我以前編譯qt時喜歡用靜態編譯,這樣做的好處是不需要vs的執行時庫,也不需要qt的庫,部署起來很方便。缺點就是debug版本編譯出來非常大,哪怕是個很小的功能編譯出來基本上都15m左右,而且編譯過程很耗時。現在我直接使用動態編譯。我使用的qt安裝包是qt-win-opensource-4.8.2-vs2010.exe
編譯步驟:
1. 建立環境變數
qmakespec win32-msvc2010 // 注意
qtdir s:\qt\4.8.2 // qt的安裝目錄
path s:\qt\4.8.2\bin;
注意: qmakespec 還是 win32-msvc2010 因為如果要改成win32-msvc2012,需要改很多相關的配置。又麻煩又不安全。而且使用win32-msvc2010並不影響我們的結果。
2. 修改 mkspecs\win32-msvc2010\qmake.conf
將 qmake_compiler_defines += _msc_ver=1600 win32 當中的1600改成1700
qmake_cflags = -nologo -zm200 -zc:wchar_t-
改為qmake_cflags = -nologo -zm200 -zc:wchar_t
3. 在開始選單中找到 vs2012 x86 native tools command prompt 並執行
這一步非常簡單但很重要,一定要選擇vs2012目錄下的bat檔案
4. 在控制台中,切換到qt的安裝目錄下。使用如下引數進行配置
configure.exe -platform win32-msvc2010 -opensource -debug-and-release -shared -qt-sql-sqlite -plugin-sql-sqlite -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qmake -process -rtti -dbus -webkit -script -scripttools -no-dbus
5. nmake 開始編譯。 不過在編譯過程中會遇到幾個錯需要手動修改一下**。
6. 第乙個錯誤如下:
.\wtf/hashset.h(180) : error c2664: 'std::pair<_ty1>::pair(const std::pair<_ty1> &)' : cannot convert parameter 1 from 'std::pair<_ty1>' to 'const std::pair<_ty1> &'
在qt的src目錄搜尋這個hashset.h
將180行所在的函式以及它下面的函式用下面的**替換:
template7. 繼續 nmake 遇到第二個錯誤inline pair::const_iterator, bool> hashset::add(const valuetype &value)
template
template
inline pair::iterator, bool>
hashset::add(const t& value)
platform\defaultlocalizationstrategy.cpp(327) : error c2001: newline in constant
platform\defaultlocalizationstrategy.cpp(327) : fatal error c1057: unexpected end of file in macro expansion
這個錯誤的原因是因為**裡面的非英文的引號造成的。
原始的錯誤**如下:
return web_ui_string("look up 「」", "look up context menu item with selected word").replace("", truncatedstringforlookupmenuitem(selectedstring));
大家注意 單詞前後的引號。就是它造成編譯報錯。修改成下面的**
return web_ui_string("look up \"\"", "look up context menu item with selected word").replace("", truncatedstringforlookupmenuitem(selectedstring));
8. 再次nmake,好了到這裡為止,就剩下漫長的等待了。我一般是睡覺之前編譯,一晚上的時間足夠了。
9. 補充,有個開源工具叫jom,也是qt官方的,它支援多核編譯,可以大大加快編譯速度。
使用的方法也很簡單jom –j 8 你有幾個核就寫幾。我是8個核
簡單的看一下效果吧!
注意最後兩個dll是vs2012的執行時庫,說明我們已經編譯成功了!
好訊息是這兩處bug已經報給qt官方了,我相信在以後的版本中不會在有類似的問題了。
交叉編譯Qt4 8 2
分類 linux qt 2012 07 04 11 36 171人閱讀收藏 舉報 1.安裝交叉編譯器。利用友善之臂自帶的交叉編譯器。將arm linux gcc 4.3.2.tgz 放在 root下,執行如下操作 cd root tar xvzf arm linux gcc 4.3.2.tgz c ...
Linux下編譯安裝QT 4 8 2
一 源 的獲取。官網最新的是4.8.2版本。二 解壓 tar zxvf qt everywhere opensource src 4.8.2.tar.gz 三 執行.config生成makefile config 下面出現對話方塊選擇open source edition.這是自由版。輸入yes接受...
ubuntu11 04下編譯安裝Qt4 8 2
主機版本 ubuntu11.04 編譯器版本 gcc 4.5.2 1 建立工作目錄 root rjm home mkdir work root rjm home ls root rjm home cd work root rjm home work mkdir qt root rjm home wo...