關於編譯Qt以及驅動的一點總結吧


通過這幾次的折騰,對編譯Qt算是有一點的心得吧:

    首先我們編譯QT的時候需要面對的是下載源代碼,一般情況下我們建議下載qt-everywhere-opensource-src-4.8.2.zip這種形式的源代碼。這樣編譯起來的問題也就很少了。當然如果人品不行的話,還是會出現很多的問題的。

    其次是選擇動態編譯還是靜態編譯,默認是動態的,我之前一直打算采用靜態編譯的,這樣分發程序的時候很簡單,但是在靜態編譯的時候出現許多的問題,導致我來來回回編譯了幾次。

    關於靜態編譯請參看:這篇文章 文章中是使用vs2010編譯的Qt4.8.0版本。如果你剛好也是在windows下面打算采用vs進行編譯,這篇文章很不錯,但是有一些許多注意的問題。

  •     qt的安裝路徑,以及以后使用vs建立qt項目的時候,不能有中文,路徑中也不能有空格,比如program files之類的路徑也是不行的。
  •     刪除源碼包中bin目錄下的syncqt和syncqt.dat文件,如你不放心可將其改名或剪切到別的位置。如不修改將發生 Perl not found in environment - cannot run syncqt 錯誤。
  •     一定要修改\mkspecs\win32-msvc2010下的qmake.conf文件,將其中的
    QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
    注意末尾的”-“號區別。如不修改將來如有項目使用wchar_t,qt卻編譯成wchar_t-,編譯會導致連接錯誤,提示找不到Qwstring;
  •     關於是否需要修改\mkspecs\win32-msvc2010下的qmake.conf文件中的QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG這3處后面的MD,MDd,取決你打算動態還是靜態編譯,如果是靜態編譯的話,改為:MT,MTd(最后還要在vs2010中的項目屬性中將MD改為MT)。如果是動態編譯的話,不要改。
  •     一定要修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,將本行替換成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));(由於word自動排版問題,請各位直接將以上英文部分一次性全復制,其實它們是一行,不要分行復制)。如果你仔細看原來的那行的話,你會發現雙引號是錯誤的,如不修改將出現編譯Webkit 時會出現 U1077錯誤。
  •     關於configure參數的說明,可以到時候輸入configure -help自行查看,或者去官網。
  •     編譯的時候建議使用-debug-and-release,如果只是單純的編譯debug或者release的時候,可能會出現一些問題。尤其是很容易出現debug調用release的東西或者相反,這種東西很煩人的,所以建議都變異,占用不了多大的空間。
  •     使用-nomake demos -nomake examples -nomake docs選項將加速編譯過程,建議在編譯qt源碼的時候都在configure參數中加上這些,也就是不編譯demos和docs和examples文件夾下面的東西,我知道這些是很好的例子,但是我的意思是在你不能確保自己能夠一次性編譯成功Qt的情況下,加上這些參數,能夠為你節省大量的時間,因為萬一編譯錯誤的話,你又得重新來編譯了。如果你日后想編譯demos或者examples的時候,去demos或者examples的目錄下,qmake dems.pro或者qmake examples.pro然后nmake就行了。
  • 使用-mp選項可以加速,適合多核用戶提高編譯速度
  • 千萬不要在nmake之后,執行nmake clean,nmake confclean。別相信網上說的那些什么先備份在刪除的,再說這些東西占用不了幾個空間的。

 

下面說說編譯Qt的mysql,oracle驅動吧。安裝好oracle或者mysql之后,命令很簡單,對於Mysql執行下面的命令(注意修改自己的路徑名,最好別有中文和空格):

首先cd到  D:\qt\src\plugins\sqldrivers\mysql
然后qmake INCLUDEPATH+="D:\phpdev\mysql\include" LIBS+="D:\phpdev\mysql\lib\libMySQL.lib" MySQL.pro 
最后nmake

  然后在你的D:\qt\plugins\sqldrivers(注意對應你的安裝路徑)會有8個文件。

對於oracle的話,基本差不多,命令如下:

set INCLUDE=%INCLUDE%;D:\app\rollen\product\11.2.0\client_1\oci\include
set LIB=%LIB%;D:\app\rollen\product\11.2.0\client_1\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
nmake

也會產生8個文件。如圖(由於我的博客模板的問題,圖片部分沒有顯示,其中mysql的文件8個,oracle的8個):大家可以右鍵,在新標簽頁查看圖片。

然后剩下的就是配置vs2010了,強烈推薦同時配置Vassist。

關於如何配置vs和VAssist的話網上有很多教程,我就不給百度和google這些公司制造去重復的負擔了,呵呵。

筆者之前靜態編譯N次,都遇到了錯誤,最后沒辦法,采用動態編譯,一次性成功,哈哈。

另外關於mysql和oracle11g的qt驅動,需要的朋友給我郵件,或者評論。

 參考資料:

(原創)親測VS2010純靜態編譯QT4.8.0,實現VS2010編譯調試Qt程序,QtCreator靜態發布程序

VS2008 環境中完美搭建 Qt 4.7.4 靜態編譯的調試與發布

文章跟新

  許多朋友還是不會編譯Qt,其實吧,我覺的動態編譯沒什么不好,而且基本都是一次性成功的。為什么非得搞靜態編譯。

  另外,許多朋友詢問驅動的事情,所以我上傳編譯好之后的驅動到我的新浪微盤。下載地址:http://vdisk.weibo.com/s/a9JGt

       編譯環境:vs2010+Oracle11g/mysql/lited4.。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM