使用VS2010開發Qt程序的4點經驗(QT4到QT5的升級,更改sln文件,切換工程使用的Qt庫,在VS的Solution Explorer視圖中建立文件夾)


導讀

     相比於Qt Creator,我更喜歡用VS2010來進行開發。雖然啟動時間相對較慢,但是VS下強大的快捷鍵和豐富的插件,以及使用多年的經驗,都讓我覺得在開發過程中得心應手。其中最重要的一點是,有時候Qt Creator報的錯誤莫名其妙。要根據提示找到錯誤根源顯得無從下手。而VS的一般錯誤說明都比較人性化,即便在某些時候無從解決,也可以通過搜索引擎大致定位出錯誤的源頭。下面是在調試網上的一些源代碼的時候,積累下來的一點經驗,記下來一來備忘,二來也可供后來人參考。

The system cannot find the path specified

      當我從用VS2010打開從網上下載下來的源代碼工程進行編譯的時候,輸出欄中出現了一系列如下的錯誤提示:

     我的開發環境為:VS2010 32位旗艦版,Windows 7 64位,Qt庫版本為5.2.1。第一次遇到這樣的問題,還真的莫名其妙。於是上網搜了搜,發現了一些苗頭。該工程原本是使用Qt 4.x進行開發的,但是本人使用的是Qt 5.2.1。因此我想應該是Qt庫的版本不同而造成的。后來在Qt開發者社區中發現了一個解決方案,具體解決過程如下:

找到工程目錄下面的.vcxproj文件,打開並搜索關鍵字:QtVersion

 

     替換為如下內容:

     這時再回到VS,會發現如下提示:

      點擊重新加載之后,如果直接開始編譯工程會得到如下的錯誤提示:

     很顯然,我們需要配置下該工程的Qt庫版本。因為我們在.vcxproj文件中改動了工程使用的Qt庫版本,於是這里需要在Qt-VS-Addon插件中進行配置,選擇Qt Project Settings彈出如下對話框,選擇當前可用的Qt庫版本(我的版本名稱為msvc2010),然后如右側圖所示勾選必須的模塊:

     點擊OK,然后上述錯誤就可以被消除了。對於基於其他Qt版本的工程,也可以如上進行移植。移植過程中會需要修改頭文件,畢竟Qt 4.x和Qt 5.x相比差異性較大,這也是我在閱讀人家源代碼的時候最大的煩惱。往往改着改着就不想改了,因為牽涉的版本問題(包括Qt和VS,甚至第三方庫)太多太折磨人了。

Qt 4.x port to Qt 5.x

     上面說過,如果要移植基於Qt 4.x的工程到Qt 5.x,要做的事情還真比較多。這一節就講講Qt庫的lib文件。以上例說明,當上述錯誤修改好后,編譯工作並不能順利完成,在我的機器上報出來如下的錯誤:

      前面編譯工作都沒報錯,顯然是連接階段出錯了。看上面這名字,似乎是QtCored.lib這個文件的過度版本無法找到。於是,執行操作:“點擊項目名稱->右鍵選擇項目屬性->配置屬性->鏈接器->輸入->附加依賴項”,可以看到:

      在Qt的安裝目錄下(如:C:\Qt\Qt5.2.1\5.2.1\msvc2010_opengl\lib),我並沒找到以上這些lib文件,於是嘗試用上述目錄中對應的lib文件進行替換:

     重新編譯工程,此時編譯過程順利結束,生成了期待中的可執行程序。這僅僅是lib文件的設置,源代碼的修改其實是另一大難題。尤其是QtGui在Qt 5.x中已經消失,因此需要大面積修改文件內容。

切換工程使用的Qt庫

      當機器中同時安裝了多個版本的Qt庫的時候,在VS也可以自如的指定使用那個版本進行編譯。當然,僅僅限於大版本相同的情況下,因為這時需要修改源碼的地方較小,甚至不需要修改就可以完成編譯工作。如果大版本不同的話,修改源碼是免不了的一件事。

      如何添加不同的Qt庫版本到VS中來呢?這個工作就交由qt-vs-addin來完成吧。 在菜單欄中選中Qt options,點擊Add按鈕並選擇好Qt庫的安裝路徑即可,版本名可自定義。在Qt Default Settings頁面中,還可以指定一些編譯時的默認設置。

值得注意的是,在VS中首次建立好Qt工程之后,如果后續又添加了不同Qt庫版本,並嘗試用新的Qt庫來編譯工程,那么一定要將新的Qt庫的名稱保持與建立工程時選擇的Qt庫名稱保持一致,否則將會出現無法理解的錯誤,或許摸索一整天都不會有結果。當然,或許修改.vcxproj文件也許有用。

在VS的Solution Explorer視圖中建立文件夾

     在VS中如何直接新建文件夾,並且保持和文件系統同步呢?以前的做法是,先在工程目錄下建立一個新的文件夾,然后到VS工程視圖中引入進來。雖然可以用,未免顯得太過麻煩。如下是一個經過實踐的辦法:

     在Solution Explorer視圖中點擊工程名稱,可以發現上面有個小圖標出現了(提示信息為:顯示所有文件),而點擊解決方案名稱的時候,這個圖標又消失了。點擊一下這個圖標,頓時可以發現當前工程目錄在磁盤上的所有文件都出現了,包括編譯過程中產生的各種中間文件。顯然,這就是我們要的!建立文件夾的步驟如下:

      選擇好文件夾的名稱,打開工程所在目錄,對應的文件夾赫然在目!如下是我用文件夾組織工程的前后狀況:

      顯然清爽了不少。源代碼文件在邏輯上進行了划分,對於清晰的理解整個工程的模塊、架構都有莫大的幫助。對於后來的開發者和維護人員都是一種靈魂的解脫...

參考

1. http://qt-project.org/forums/viewthread/24277

http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experience.html


免責聲明!

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



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