VS2012 RC 編譯Qt 4 8 2完整過程

2022-03-01 19:37:15 字數 2659 閱讀 4972

背景:

最近用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行所在的函式以及它下面的函式用下面的**替換:

template

inline pair::const_iterator, bool> hashset::add(const valuetype &value)

template

template

inline pair::iterator, bool>

hashset::add(const t& value)

7.  繼續 nmake 遇到第二個錯誤

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...