• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 28, comments - 179, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Qt4.2.3編譯記錄

            Posted on 2007-06-19 09:27 chemz 閱讀(5561) 評論(4)  編輯 收藏 引用 所屬分類: C++
                                            Qt4.2.3編譯記錄
                Qt已經發(fā)布了最新架構的版本Qt4了,目前的最新版本已經到了Qt4.3,由于原來還使用
            的是Qt3.3.4的版本,所以就Qt4種的2.3版進行了編譯,準備升級到Qt4。這個編譯過程一般
            而言還算是比較的簡單,只是由于Visual Studio 2005在進行了SP1后引入了一個編譯bug,
            導致編譯Qt4時候會出現(xiàn)編譯時錯誤,同時一般而言在Qt4.2.3的編譯選項中包含了一些和
            Visual Studio2005默認不相同的選項(同時也是標準不太兼容的地方),所以現(xiàn)在將編譯
            的具體過程進行詳細的說明。

            1. 設置環(huán)境變量
               首先肯定是要解壓縮Qt4.2.3的源代碼包到某個目錄下(這里使用的是commercial版本),
               如:D:\Qt\4.2.3\。然后在系統(tǒng)環(huán)境目錄下添加一個QTDIR=D:\Qt\4.2.3環(huán)境變量,并且
               在系統(tǒng)的PATH追加%QTDIR%\bin目錄項,以使得可以找到編譯后的庫和應用程序。
            2. 應用Patch
               Qt4中有兩個地方需要進行修改才能夠正常的編譯,一個是關于編譯選項的,另外一個是
               關于源代碼的。
               2.1. 修改編譯選項
                    進入到%QTDIR%\mkspecs\win32-msvc2005\目錄下,打開qmake.conf文件找到19行的
                    QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-,刪除后面的-Zc:wchar_t-選項,
                    主要是為了保持標準兼容性以及和其他代碼的兼容性,否則會出現(xiàn)Qt4中采用了
                    wchar_t的函數(shù)不能夠接受沒有-Zc:wchar_t選項下的wchar_t類型;
               2.2. 修改源代碼
                    進入到%QTDIR%\src\corelib\tools\目錄下,打開qmap.h文件找到QMultiMap類的
                    定義,用如下的內容替換replace和insert函數(shù):
                    typedef QMap<Key, T>::iterator QMap_iterator;
                    inline QMap_iterator replace(const Key &akey, const T &avalue){ return QMap<Key, T>::insert(akey, avalue); }
                    inline QMap_iterator insert(const Key &akey, const T &avalue){ return QMap<Key, T>::insertMulti(akey, avalue); }
                    并將下面的replace和insert函數(shù)的定義體給注釋掉;
                    同樣的打開qhash.h文件找到QMultiHash類的定義,用如下的內容替換replace和
                    insert函數(shù):
                    typedef QHash<Key, T>::iterator QHash_iterator;
                    inline typename QHash_iterator replace(const Key &akey, const T &avalue){ return QHash<Key, T>::insert(akey, avalue); }
                    inline typename QHash_iterator insert(const Key &akey, const T &avalue){ return QHash<Key, T>::insertMulti(akey, avalue); }
                    并將下面的replace和insert函數(shù)的定義體給注釋掉。
                    之所以要這樣修改是因為Visual Studio2005的SP1所引入的bug導致的。
            3. 安裝協(xié)議文件
               要安裝商業(yè)版本就必須具有安裝商業(yè)的license,將.qt-license文件拷貝到用戶的
               %USERPROFILE%目錄下,如:C:\Documents and Settings\Administrator\。
            4. 配置并編譯
               打開console窗口,并設置VC的環(huán)境變量,然后運行如下的配置命令:
               configure -debug-and-release -no-stl -no-sql-sqlite -qt-libjpeg -qt-gif -platform win32-msvc2005
               成功后就可以通過運行nmake來完成源代碼的完全編譯了。
               上面的命令行中,根據(jù)你的要求可以自行調整,一般而言為了成功編譯必須要包含的命令
               選項是-debug-and-release和-platform win32-msvc2005兩個,其他可以選擇。


            Feedback

            # re: Qt4.2.3編譯記錄  回復  更多評論   

            2007-06-21 17:37 by pass86
            在學習列表中,支持。

            # re: Qt4.2.3編譯記錄  回復  更多評論   

            2007-11-14 16:16 by lanjian
            您好我在VS2005下面nmake 的時候出錯
            VC/bin/cl.exe返回代碼0xc0000135
            vc/bin/nmake.exe返回代碼0x2
            這個是什么錯誤?怎么解決呢?多謝

            # re: Qt4.2.3編譯記錄  回復  更多評論   

            2009-12-01 10:46 by test
            媽媽的 看了無數(shù)篇文章 知道看到你的文章才能編譯,其他人真是吃了狗屎

            # re: Qt4.2.3編譯記錄  回復  更多評論   

            2009-12-01 10:48 by test
            媽媽的 看了無數(shù)篇文章 直到看到你的文章才能編譯,其他人真是吃了狗屎
            性高湖久久久久久久久AAAAA| 狠狠色综合久久久久尤物| 午夜视频久久久久一区 | 国产一级做a爰片久久毛片| 久久国产精品99精品国产987| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久婷婷是五月综合色狠狠| 无码精品久久久久久人妻中字| 精品久久人妻av中文字幕| 久久福利片| 久久精品国产久精国产思思| 久久久不卡国产精品一区二区| 一本色道久久综合狠狠躁篇| 国产精品一久久香蕉国产线看| 欧美与黑人午夜性猛交久久久| 国产精品久久久久AV福利动漫| 四虎影视久久久免费| 久久久久亚洲av无码专区喷水| 狠狠综合久久综合中文88| 久久精品亚洲中文字幕无码麻豆 | 久久亚洲国产精品五月天婷| 国产精品一区二区久久国产| 久久成人小视频| 亚洲精品国产自在久久| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 老司机国内精品久久久久| 午夜不卡久久精品无码免费| 人妻中文久久久久| 久久久99精品成人片中文字幕| 日本免费久久久久久久网站| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲AV无码1区2区久久| 亚洲乱码精品久久久久..| 国产香蕉久久精品综合网| 欧美午夜A∨大片久久 | 性做久久久久久久久久久| 国产精品综合久久第一页 | 久久精品国产亚洲AV无码麻豆| 日本五月天婷久久网站| 中文字幕精品久久| 久久青青色综合|