Qt creator中項目的構(gòu)建配置和運行設(shè)置的步驟
使用 Qt Creator 集成開發(fā)環(huán)境構(gòu)建和運行程序是一件非常簡單的事情,一個按鈕或者一個快捷鍵搞定全部,大家已經(jīng)都了解了。但是,這些看起來簡單的過程,背后到底發(fā)生了什么呢?
點擊 Qt Creator 項目模式,可以看到當(dāng)前項目的配置界面:
在打開具體的項目之后,Qt Creator 的項目模式才會變得可用。對于打開的項目,比如 HelloWorld 項目,可配置的內(nèi)容如上圖左側(cè)顯示的五大類,分別是“Build & Run(構(gòu)建和運行)”“編輯器”“代碼風(fēng)格”“依賴關(guān)系”“Clang Static Analyzer(Clang靜態(tài)分析)”,最常用的就是“Build & Run”。
對于每個 Qt 套件,又可以分別配置構(gòu)建時環(huán)境、命令和運行時環(huán)境、命令。如果需要給生成的可執(zhí)行程序如 *.exe 附加命令參數(shù),那就可以點擊 Qt 套件名稱下方的“Run”設(shè)置,給可執(zhí)行程序附加參數(shù)。下面重點關(guān)注“Build”設(shè)置。
在“Build”設(shè)置里,上方組合框里可以選擇構(gòu)建類型(Debug、Release 或者 Profile),并且可以自己添加新的構(gòu)建類型(一般沒必要)。
影子構(gòu)建(Shadow build)
接下來“概要”里面,Qt Creator 默認(rèn)使用影子構(gòu)建方式(Shadow build),這種構(gòu)建項目的方式是將構(gòu)建過程中的中間文件和目標(biāo)程序都放到獨立的構(gòu)建目錄中,實現(xiàn)源代碼目錄和構(gòu)建目錄的徹底分離,這對程序源代碼的發(fā)布很方便,不會將構(gòu)建過程中的中間文件混雜進來。
對于項目 HelloWorld ,它的源代碼路徑是 D:\QtDemo\HelloWorld,而上圖中影子構(gòu)建的目錄是在 D:\QtDemo\build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug,源碼文件夾和構(gòu)建文件夾都在父文件夾 QtDemo 里。
影子構(gòu)建目錄的命名規(guī)則是:build-項目名-構(gòu)建套件名-構(gòu)建類型 。示范的項目名 HelloWorld,套件名 Desktop Qt 5.9.0 MinGW 32bit,構(gòu)建類型為 Debug,合成之后的構(gòu)建目錄里不能帶空格和點號,所以把空格和點號都換成下劃線,得到 build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug 。項目構(gòu)建時生成的中間文件和最終的目標(biāo)程序都可以在影子構(gòu)建目錄里找到。
構(gòu)建步驟
接著是“構(gòu)建步驟”,前面提到過 qmake 編譯程序的三板斧,因為 pro 文件已經(jīng)由 Qt Creator 生成好了,所以這時候編譯程序只需要剩下的兩板斧:
①用 qmake 生成 Makefile 到構(gòu)建目錄;
②在構(gòu)建目錄里面執(zhí)行 make (mingw32-make) 。
對于這兩板斧的細(xì)節(jié)可以點開 qmake 和 Make 兩行右邊的詳情進行查看,這里不額外截圖了,僅解釋一下上圖中 qmake 命令的選項參數(shù):
-r選項是指遞歸檢查項目文件夾的意思;
-spec win32-g++選項參數(shù)是指使用 win32-g++ 定制腳本來生成 Makefile,對于不同的編譯器和操作系統(tǒng)平臺會使用不同的定制腳本,win32-g++ 是專門針對 Windows 系統(tǒng) MinGW 編譯環(huán)境的定制腳本(實際的定制腳本位于 QTDIR/mkspecs/win32-g++ 文件夾里);
"CONFIG+=debug"是指生成 debug 類型的目標(biāo)程序,對于優(yōu)化發(fā)行版,對應(yīng)的就是 “CONFIG+=release”,如果這兩個 CONFIG 都不加,那么默認(rèn)生成 release 類型的目標(biāo)程序。
查看項目構(gòu)建和項目運行時的實際情況
關(guān)于 Qt 項目構(gòu)建的設(shè)置暫時介紹這些,接下來我們看看關(guān)于項目構(gòu)建和項目運行時的實際情況?;氐?Qt Creator 編輯模式,點擊最下面一排輸出面板里的“編譯輸出”面板,可以看到生成項目過程中的編譯、鏈接命令:
Qt Creator 實際使用的編譯鏈接命令比我們之前演示的編譯鏈接命令復(fù)雜太多了,之前使用的是極度精簡的命令。如果項目的編譯鏈接沒有出問題,不用太在意“編譯輸出”面板里的東西,如果編譯鏈接過程出錯了,就需要查看“編譯輸出”面板里的問題了。雖然 Qt Creator 編譯鏈接命令復(fù)雜,但大致過程和《Qt .ui文件的使用》最后那張生成過程圖是類似的。
與“編譯輸出”面板相比,“應(yīng)用程序輸出”面板更為常用,對于調(diào)試信息的輸出、打印到命令行的輸出等,Qt Creator 都會捕捉到,并顯示到“應(yīng)用程序輸出”面板,如下圖所示:
“應(yīng)用程序輸出”面板標(biāo)題欄位置還有些小按鈕,感興趣的讀者可以自己試試,有清空輸出內(nèi)容、重新運行程序、停止當(dāng)前運行程序之類快捷功能。
運行設(shè)置
最后說明一下目標(biāo)程序的運行環(huán)境,如果希望從集成開發(fā)環(huán)境為生成的目標(biāo)程序加命令行參數(shù),那么需要用到項目模式的“運行設(shè)置”:
點擊“Run”按鈕,就會進入運行配置界面,可以看到上圖幾個關(guān)鍵的路徑和參數(shù)設(shè)置:
路徑/參數(shù) 說明
Executable 可執(zhí)行程序路徑,或叫目標(biāo)程序路徑,生成的 exe 文件為 D:\QtDemo\build-HelloWorld-Desktop_Qt_5_9_0_MinGW_32bit-Debug\debug\HelloWorld.exe,如果進入該路徑,直接運行 exe 文件,那么 exe 文件默認(rèn)是無法正常運行的,因為缺少運行時依賴的動態(tài)庫和環(huán)境變量。需要從開始菜單啟動 Qt 命令行,然后從命令行啟動 exe 才能正常運行。
Command line arguments 目標(biāo)程序的命令行參數(shù),可以在這里手動添加命令行參數(shù),這樣每次 Qt Creator 啟動目標(biāo)程序時都會附加該參數(shù)。
Working directory 目標(biāo)程序工作路徑,這里需要特別注意,目標(biāo)程序既不是從源代碼路徑啟動,也不是從它自己的可執(zhí)行程序路徑啟動, 而是從工作路徑啟動,這個工作路徑默認(rèn)與影子構(gòu)建路徑一樣。 因此,如果在程序代碼里面使用相對路徑操作文件,如 “data.db”,那么這個文件應(yīng)該放到工作路徑,這樣目標(biāo)程序從 Qt Creator 啟動時,才能找到相對路徑里的文件。
運行設(shè)置里面還有一個重要的設(shè)置就是 Run Environment,運行時環(huán)境變量的設(shè)置,我們標(biāo)出其中重要的變量如下:
讀者一般對 PATH 環(huán)境變量比較熟悉,就是大量可執(zhí)行程序 *.exe 和依賴庫 *.dll 的路徑,程序啟動時會從 PATH 環(huán)境變量找尋依賴的 dll 并加載。Qt 也為 PATH 添加了自己的依賴庫路徑,新增的有三個路徑:
D:\Qt\5.9\mingw53_32\lib;
D:\Qt\5.9\mingw53_32\bin;
D:\Qt\Tools\mingw530_32\bin;
第一個是編譯時依賴庫的路徑,第二個是 Qt 庫自己可執(zhí)行程序和動態(tài)庫路徑,第三個是 MinGW 編譯環(huán)境的可執(zhí)行程序和動態(tài)庫路徑。
除了 PATH 環(huán)境變量,Qt 庫專屬的 QTDIR 環(huán)境變量也很重要,Qt 程序運行時不僅依賴 *.dll ,還依賴 Qt 庫里面的插件、翻譯文件、設(shè)置文件等等,QTDIR 是 Qt 庫的總目錄,Qt 程序根據(jù)這個總目錄自動去找尋子文件夾,子文件夾會包含 Qt 程序運行時依賴的其他東西。
如果讀者希望把 Qt 的依賴庫集成到操作系統(tǒng)的環(huán)境變量,那么不僅要設(shè)置 PATH,還要設(shè)置正確的 QTDIR。QTIDR 通常就是 qmake.exe 所在文件夾的父文件夾,比如 qmake.exe 位于 D:\Qt\5.9\mingw53_32\bin,那么 QTDIR 就是 D:\Qt\5.9\mingw53_32 。
到此這篇關(guān)于Qt creator中項目的構(gòu)建配置和運行設(shè)置的步驟的文章就介紹到這了,更多相關(guān)Qt creator構(gòu)建配置和運行設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++表格組件Qt?TableWidget應(yīng)用詳解
本文詳細(xì)講解了C/C++中使用列表框組件Qt?TableWidget的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題
Dynamic Programming動態(tài)規(guī)劃方法采用最優(yōu)原則來建立用于計算最優(yōu)解的遞歸式,并且考察每個最優(yōu)決策序列中是否包含一個最優(yōu)子序列,這里我們就來展示C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題2016-06-06在std::thread中創(chuàng)建并管理QEventLoop的全面解析
QEventLoop的工作原理可以簡單地理解為一個無限循環(huán),它會不斷地檢查是否有新的事件需要處理,如果有,就將事件從事件隊列中取出,然后找到相應(yīng)的事件處理器進行處理,這篇文章主要介紹了在std::thread中創(chuàng)建并管理QEventLoop的全面指南,需要的朋友可以參考下2023-06-06