Qt creator中項目的構建配置和運行設置

使用 Qt Creator 集成開發環境構建和運行程序是一件非常簡單的事情,一個按鈕或者一個快捷鍵搞定全部,大家已經都瞭解了。但是,這些看起來簡單的過程,背後到底發生了什麼呢?

點擊 Qt Creator 項目模式,可以看到當前項目的配置界面:
Qt項目配置界面

在打開具體的項目之後,Qt Creator 的項目模式纔會變得可用。對於打開的項目,比如 HelloWorld 項目,可配置的內容如上圖左側顯示的五大類,分別是“Build & Run(構建和運行)”“編輯器”“代碼風格”“依賴關係”“Clang Static Analyzer(Clang靜態分析)”,最常用的就是“Build & Run”。

對於每個 Qt 套件,又可以分別配置構建時環境、命令和運行時環境、命令。如果需要給生成的可執行程序如 *.exe 附加命令參數,那就可以點擊 Qt 套件名稱下方的“Run”設置,給可執行程序附加參數。下面重點關注“Build”設置。

在“Build”設置裏,上方組合框裏可以選擇構建類型(Debug、Release 或者 Profile),並且可以自己添加新的構建類型(一般沒必要)。

影子構建(Shadow build)

接下來“概要”裏面,Qt Creator 默認使用影子構建方式(Shadow build),這種構建項目的方式是將構建過程中的中間文件和目標程序都放到獨立的構建目錄中,實現源代碼目錄和構建目錄的徹底分離,這對程序源代碼的發佈很方便,不會將構建過程中的中間文件混雜進來。

對於項目 HelloWorld ,它的源代碼路徑是 D:\QtDemo\HelloWorld,而上圖中影子構建的目錄是在 D:\QtDemo\build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug,源碼文件夾和構建文件夾都在父文件夾 QtDemo 裏。

影子構建目錄的命名規則是:build-項目名-構建套件名-構建類型 。示範的項目名 HelloWorld,套件名 Desktop Qt 5.9.0 MinGW 32bit,構建類型爲 Debug,合成之後的構建目錄裏不能帶空格和點號,所以把空格和點號都換成下劃線,得到 build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug 。項目構建時生成的中間文件和最終的目標程序都可以在影子構建目錄裏找到。

構建步驟

接着是“構建步驟”,前面提到過 qmake 編譯程序的三板斧,因爲 pro 文件已經由 Qt Creator 生成好了,所以這時候編譯程序只需要剩下的兩板斧:
①用 qmake 生成 Makefile 到構建目錄;
②在構建目錄裏面執行 make (mingw32-make) 。

對於這兩板斧的細節可以點開 qmake 和 Make 兩行右邊的詳情進行查看,這裏不額外截圖了,僅解釋一下上圖中 qmake 命令的選項參數:

-r選項是指遞歸檢查項目文件夾的意思;
-spec win32-g++選項參數是指使用 win32-g++ 定製腳本來生成 Makefile,對於不同的編譯器和操作系統平臺會使用不同的定製腳本,win32-g++ 是專門針對 Windows 系統 MinGW 編譯環境的定製腳本(實際的定製腳本位於 QTDIR/mkspecs/win32-g++ 文件夾裏);
"CONFIG+=debug"是指生成 debug 類型的目標程序,對於優化發行版,對應的就是 “CONFIG+=release”,如果這兩個 CONFIG 都不加,那麼默認生成 release 類型的目標程序。

查看項目構建和項目運行時的實際情況

關於 Qt 項目構建的設置暫時介紹這些,接下來我們看看關於項目構建和項目運行時的實際情況。回到 Qt Creator 編輯模式,點擊最下面一排輸出面板裏的“編譯輸出”面板,可以看到生成項目過程中的編譯、鏈接命令:
Qt Creator編譯輸出面板

Qt Creator 實際使用的編譯鏈接命令比我們之前演示的編譯鏈接命令複雜太多了,之前使用的是極度精簡的命令。如果項目的編譯鏈接沒有出問題,不用太在意“編譯輸出”面板裏的東西,如果編譯鏈接過程出錯了,就需要查看“編譯輸出”面板裏的問題了。雖然 Qt Creator 編譯鏈接命令複雜,但大致過程和《Qt .ui文件的使用》最後那張生成過程圖是類似的。

與“編譯輸出”面板相比,“應用程序輸出”面板更爲常用,對於調試信息的輸出、打印到命令行的輸出等,Qt Creator 都會捕捉到,並顯示到“應用程序輸出”面板,如下圖所示:
在這裏插入圖片描述

“應用程序輸出”面板標題欄位置還有些小按鈕,感興趣的讀者可以自己試試,有清空輸出內容、重新運行程序、停止當前運行程序之類快捷功能。

運行設置

最後說明一下目標程序的運行環境,如果希望從集成開發環境爲生成的目標程序加命令行參數,那麼需要用到項目模式的“運行設置”:
在這裏插入圖片描述

點擊“Run”按鈕,就會進入運行配置界面,可以看到上圖幾個關鍵的路徑和參數設置:
路徑/參數 說明
Executable 可執行程序路徑,或叫目標程序路徑,生成的 exe 文件爲 D:\QtDemo\build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\HelloWorld.exe,如果進入該路徑,直接運行 exe 文件,那麼 exe 文件默認是無法正常運行的,因爲缺少運行時依賴的動態庫和環境變量。需要從開始菜單啓動 Qt 命令行,然後從命令行啓動 exe 才能正常運行。

Command line arguments 目標程序的命令行參數,可以在這裏手動添加命令行參數,這樣每次 Qt Creator 啓動目標程序時都會附加該參數。

Working directory 目標程序工作路徑,這裏需要特別注意,目標程序既不是從源代碼路徑啓動,也不是從它自己的可執行程序路徑啓動, 而是從工作路徑啓動,這個工作路徑默認與影子構建路徑一樣。 因此,如果在程序代碼裏面使用相對路徑操作文件,如 “data.db”,那麼這個文件應該放到工作路徑,這樣目標程序從 Qt Creator 啓動時,才能找到相對路徑裏的文件。

運行設置裏面還有一個重要的設置就是 Run Environment,運行時環境變量的設置,我們標出其中重要的變量如下:
在這裏插入圖片描述

讀者一般對 PATH 環境變量比較熟悉,就是大量可執行程序 *.exe 和依賴庫 *.dll 的路徑,程序啓動時會從 PATH 環境變量找尋依賴的 dll 並加載。Qt 也爲 PATH 添加了自己的依賴庫路徑,新增的有三個路徑:
D:\Qt\5.9\mingw53_32\lib;
D:\Qt\5.9\mingw53_32\bin;
D:\Qt\Tools\mingw530_32\bin;

第一個是編譯時依賴庫的路徑,第二個是 Qt 庫自己可執行程序和動態庫路徑,第三個是 MinGW 編譯環境的可執行程序和動態庫路徑。

除了 PATH 環境變量,Qt 庫專屬的 QTDIR 環境變量也很重要,Qt 程序運行時不僅依賴 *.dll ,還依賴 Qt 庫裏面的插件、翻譯文件、設置文件等等,QTDIR 是 Qt 庫的總目錄,Qt 程序根據這個總目錄自動去找尋子文件夾,子文件夾會包含 Qt 程序運行時依賴的其他東西。

如果讀者希望把 Qt 的依賴庫集成到操作系統的環境變量,那麼不僅要設置 PATH,還要設置正確的 QTDIR。QTIDR 通常就是 qmake.exe 所在文件夾的父文件夾,比如 qmake.exe 位於 D:\Qt\5.9\mingw53_32\bin,那麼 QTDIR 就是 D:\Qt\5.9\mingw53_32 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章