目錄
1、新建項目
2、單工程項目創建?
3、多工程項目創建
?4、添加子工程(基于多工程目錄結構)
5、 .pro文件
1、新建項目
切換到“編輯”界面,點擊菜單欄中的“文件”-“新建文件或項目”
2、單工程項目創建?
只有一個工程的項目,新建模板時就只用在“項目”-“Application”中選,最右邊的一欄有該模板的解釋說明。按照需求創建對應的應用程序,在此我們創建一個最常用的帶UI的qt應用程序作為示范。
選擇“Qt Widget Application”,點擊“Choose”按鈕,進行創建。設置項目名稱與項目路徑,如圖所示。設置完成后,點擊“下一步”。
?因為我們使用了集成安裝包,QtCreator的環境都已經自動安裝好了,不用配置Kit,可以直接點擊下一步。如果在當前頁面“下一步”按鈕被禁用了,則代表需要配置Kit。詳細配置可以看該章節第四點。
配置類信息,設置類名與編譯文件等的名稱,點擊下一步。注:建議類名與頭文件、源文件、ui文件的名稱與大小寫保持一致。如圖所示。
項目建立完成。該界面可以查看即將生成的所有文件與路徑。因為是單工程項目,不需要配置“作為子項目添加到項目中”;“添加到版本控制系統”,如果有需要可以選擇。注:.pro文件是qt的配置文件。
3、多工程項目創建
要創建一個多工程的項目,首先要建一個總的項目文件夾,作為根項目。
“文件”-“新建文件或項目”-“其他項目”-“子目錄項目”-“Choose”。可以看到右邊選中“子目錄項目”后,右邊的解釋。
設置項目路徑與總配置文件名稱。
?點擊下一步可以看到即將生成的目錄,該目錄只生成一個.pro,作為總配置文件。
?點擊“完成&添加子項目”,對子項目進行添加,步驟與創建單項目目錄步驟基本一致,唯一不同的是需要配置“匯總”-“作為子項目添加到項目中”,選擇剛才創建的根項目,點擊“完成”即可。
?創建成功后,目錄結構如圖所示。可以看到總項目目錄“MulPrj”下存在一個子項目目錄“Projrct_1”,“Project_1”下存在該項目的配置文件與.h/.cpp等文件。
第一個創建的工程應該為Application項目,可作為啟動項。
點擊運行程序顯示窗口。
?4、添加子工程(基于多工程目錄結構)
添加子工程有兩個方法。
- 點擊多工程項目目錄結構的根項目,右鍵-“新子項目”,進行子項目的添加。
- 點擊“文件”-“新建文件或項目”。
但是不論哪種方法,進入模板選擇界面后,都需要選擇“Library”-“C++庫”。
進入子項目的創建。
?勾選需要使用到的模塊,一般勾選圖中框起來的三個。
仍然讓項目名稱與.h/.cpp文件名稱保持一致。
“作為子項目添加到項目中”仍然選擇根項目,然后點擊“完成”。
?此時的目錄結構如下:
文件夾下的目錄結構如下:
5、 .pro文件
在多工程項目中存在多個.pro文件,大致可以分為三類:
- 根項目.pro:例如MulPrj.pro,用來控制所有子項目。
在這里我們只關注“SUBDIRS”,是根項目的固定寫法,用來聲明工程目錄集的,需要添加或刪除工程都可以在這里進行,刪除對應的工程名稱保存后,qt自動刪除樹目錄結構下的對應工程。
注釋之后可以看到目錄結構下的工程都不見了。
也可以指定到目錄文件夾下的.pro,在.pro與工程文件家名稱不相同時使用。
- ?啟動項.pro:例如Project_1.pro,作為啟動項,與子工程的配置有一些不同。
- Lib子工程.pro:例如Project_2.pro,作為創建時以library作為模板創建的工程。
#-------------------------------------------------
#
#ProjectcreatedbyQtCreator2023-03-03T14:27:35
#
#-------------------------------------------------QT+=coregui#“QT”是使用的QT庫,從向導創建中可以看出,默認包含gui與core。如果不使用則生成的為QT-=coregui。這里是“+=”代表兩個都使用。greaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=Project_1 #生成.so目標,名稱不做修飾,不用添加.so,自動生成名稱.so。如:TARGET = Project_change ,生成的.so為“Project_change.so”
DESTDIR= ../Bin#指定.so的生成路徑
TEMPLATE=app#固定寫法 主工程為app,子工程為lib#Thefollowingdefinemakesyourcompileremitwarningsifyouuse
#anyfeatureofQtwhichhasbeenmarkedasdeprecated(theexactwarnings
#dependonyourcompiler).Pleaseconsultthedocumentationofthe
#deprecatedAPIinordertoknowhowtoportyourcodeawayfromit.
DEFINES+=QT_DEPRECATED_WARNINGS #預定義頭#YoucanalsomakeyourcodefailtocompileifyouusedeprecatedAPIs.
#Inordertodoso,uncommentthefollowingline.
#YoucanalsoselecttodisabledeprecatedAPIsonlyuptoacertainversionofQt.
#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x060000#disablesalltheAPIsdeprecatedbeforeQt6.0.0CONFIG+=c++11SOURCES+=\
main.cpp\
Project_1.cppHEADERS+=\
Project_1.hFORMS+=\
Project_1.ui#Defaultrulesfordeployment.
qnx:target.path=/tmp/$${TARGET}/bin
else:unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target
在pro中配置目標路徑后,在“項目”-“概要”中取消勾選“shadow build”,讓makefile默認生成在該項目.pro所在路徑。