亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

從零開始學Qt – 13:一文讀懂Qt項目管理文件

從零開始學Qt - 13:一文讀懂Qt項目管理文件

默認情況下,每個QT項目都包含一個后綴名為.pro、名稱和項目名相同的文件,我們通常稱它為項目管理文件或者工程管理文件(簡稱項目文件)。

項目文件包含由qmake構建應用程序、庫或插件所需的所有信息。對于復雜的項目,一個項目中可能包含上百個源文件,Qt編譯這些源文件的方法是:先由qmake工具根據pro文件記錄的配置信息生成相應的makefile文件,然后執行make命令完成對整個項目的編譯。也就是說,pro文件存儲的配置信息是用來告知編譯器如何編譯當前項目的,所以一個Qt項目要想完美運行,既要保證各個源文件中程序的正確性,還要保證項目文件中配置信息的合理性。

對于一個剛剛創建好的Qt項目,pro文件并不是空的,而是包含一些基本的配置信息。實際開發中,Qt會自動修改pro文件的內容,但有時也需要我們手動修改,例如程序中用到某個第三方庫時,就需要我們手動修改pro文件。

本文為大家詳細地講解pro文件中各個配置信息的含義,以便于在需要時手動修改pro文件。

一、項目文件的要素

qmake所使用的項目文件格式可用于支持簡單和相當復雜的構建系統(build system)。簡單的項目文件使用一種直接的聲明樣式,通過定義標準變量來指定項目中使用的源文件和頭文件。復雜的項目可以使用控制流結構(control flow structure)來微調構建過程。

(1)變量

在項目文件中,變量用于保存由字符串組成的列表。在最簡單的項目中,這些變量告知qmake關于要使用的配置選項,或者提供要在構建過程中使用的文件名和路徑。

qmake在每個項目文件中查找這些變量,并使用這些內容來確定應該寫入Makefile的內容。例如,HEADERS和SOURCES中的值表示與項目管理文件在同一目錄中的頭文件和源文件。

變量還可以在文件內部用于存儲臨時的值列表,并且現有的值列表可以用新的值進行覆蓋或擴展。

下面的語句說明了如何將值賦值給變量:

HEADERS = mainwindow.h paintwidget.hSOURCES = main.cpp mainwindow.cpp paintwidget.cpp

變量中的值通過以下方式進行擴展:

CONFIG = console

下表列出了一些常用的變量,并對其進行了簡要描述。本文后面會對一些變量進行專門介紹。

變量

說明

CONFIG

一般項目配置選項

DESTDIR

指定生成的應用程序放置的目錄

TARGET

指定目標文件名。如果不設置,目標名會被自動設置為跟項目文件一樣的名稱。

FORMS

用戶界面編譯器(uic)要處理的UI文件列表

UI_DIR

指定uic命令將.ui文件轉化成ui_*.h文件的存放的目錄

HEADERS

構建項目時使用的頭(.h)文件的文件名列表

QT

在項目中使用的Qt模塊的列表

RESOURCES

要包含在最終項目中的資源文件(.qrc)的列表

RCC_DIR

指定rcc命令將.qrc文件轉換成qrc_*.h文件的存放目錄

SOURCES

構建項目時要使用的源代碼文件列表

TEMPLATE

要用于該項目的模板。這個決定了構建進程的輸出是應用程序、庫還是插件。

includePATH

頭文件包含路徑

OBJECTS_DIR

指定目標文件(obj)的存放目錄

MOC_DIR

指定moc命令將含Q_OBJECT的頭文件轉換成標準.h文件的存放目錄

DEPENDPATH

程序編譯時依賴的相關路徑

CODECFORSRC

源文件編碼方式

LIBS

引入的lib文件的路徑

一個變量的內容可以通過用$$附加該變量名來讀取。這可以用來將一個變量的內容賦值給另一個變量:

TEMP_SOURCES = $$SOURCES

$$操作符被廣泛地用于對字符串和值列表進行操作的內置函數。

(2)空格

通常在賦值語句中,空格被用來分隔變量值。要指定包含空格的一個值,必須將這些值用雙引號括起來:

DEST = "Program Files"

類似的方法也用于處理包含空格的路徑,特別是在為Windows平臺定義INCLUDEPATH路徑和libS變量時:

win32:INCLUDEPATH = "C:/mylibs/extra headers"unix:INCLUDEPATH = "/home/user/extra headers"

(3)注釋

你可以向項目文件中添加注釋。注釋以#字符開始,并持續到同一行的末尾。例如:

# Comments usually start at the beginning of a line, but they# can also follow other content on the same line.

要在變量賦值中包含#字符,必須使用內置的LITERAL_HASH變量的內容。

(4)內置函數和控制流程

qmake提供了許多內置函數來處理變量的內容。在簡單的項目文件中,最常用的函數是include()函數,以一個文件名作為一個參數。給定文件的內容將被包含在項目文件中使用include函數的位置。include函數最常用于包含其他項目文件:

include(other.pro)

對條件語句的支持是通過類似編程語言中的if語句的范圍(scopes)提供的:

win32 { SOURCES = paintwidget_win.cpp}

只有當條件為真時,才會進行大括號內的賦值操作。在上面的語句中,必須將CONFIG設置為win32,才會執行SOURCES賦值,這在Windows上是自動進行的。第一個括號{必須與條件在同一行。

對于需要進行循環操作的變量,通常使用內置函數:find()、unique()和count()等等。這些函數可以用于操作字符串和路徑、支持用戶輸入和調用外部工具。有關使用這些函數的更多信息,請參見qmake語言。

二、項目模板(TEMPLATE變量

TEMPLATE變量用于定義要構建的項目的類型。如果沒有在項目文件中聲明,qmake假設應該構建一個application應用程序,并將為此生成適當的Makefile(或等效文件)。 下表總結了可用的項目類型,并描述了qmake將為每個項目生成的文件:

模板

qmake輸出

app (缺省)

構建應用程序的Makefile

lib

構建庫(library)的Makefile

aux

不構建任何東西的Makefile。如果不需要調用編譯器來創建目標,則可以使用此方法。

subdirs

生成makefile文件編譯subdirs指定的子文件夾

vcapp

建立一個應用程序的VisualStudio項目文件

vclib

建立一個庫的VisualStudio項目文件

vcsubdirs

VisualStudio解決方案文件,用于在子目錄中構建項目

當使用subdirs 模板時,qmake生成一個Makefile來檢查每個指定的子目錄,處理子目錄中包含的任何項目文件,并在新創建的Makefile上運行平臺的make工具。SUBDIRS 變量用于包含要處理的所有子目錄的列表。

三、CONFIG變量

指定項目配置和編譯器選項。這些值可以被qmake在內部識別,部分選項的說明如下。

標識名稱

說明

release

應用程序將以release模式生成。如果“debug”被指定,它將被忽略

debug

應用程序將以debug模式生成

warn_on

編譯器會輸出盡可能多的警告信息。如果“warn_off”被指定,它將被忽略。

warn_off

編譯器會輸出盡可能少的警告信息。

qt

應用程序是一個Qt應用程序,并且Qt庫將會被鏈接。

thread

應用程序是一個多線程的應用程序

windows

只用于“app”模板:應用程序是一個Windows下的窗口應用程序

console

只用于“app”模板:應用程序是一個Windows下的控制臺應用程序

dll

只用于“lib”模板:庫是一個共享庫(dll)

staticlib

只用于“lib”模板:庫是一個靜態庫

plugin

只用于“lib”模板:庫是一個插件,這將會使dll選項生效

四、聲明Qt庫(QT變量)

通過QT變量,可以聲明所需的擴展模塊。例如,我們可以通過以下方式啟用XML和網絡模塊:

QT = network xml

注意:默認情況下,QT包括core和gui模塊,所以上面的聲明將network和XML模塊添加到這個默認列表中。以下賦值省略了默認模塊,這將在編譯程序時出現錯誤:

QT = network xml # 這將忽略core和gui模塊

如果您想構建一個沒有gui模塊的項目,那么需要使用“-=”操作符來排除它。默認情況下,QT同時包含core和gui,所以下面這一行將導致構建一個最小的QT項目:

QT -= gui # 只包含了core模塊

五、聲明其他庫

如果除了使用Qt提供的庫之外,還在項目中使用其他庫,則需要在項目文件中指定它們。通過LIBS變量,可以指定qmake要搜索的庫和要鏈接的特定庫的路徑。例如,

LIBS = -L/usr/local/lib -lmath

包含頭文件的路徑也可以使用INCLUDEPATH 變量以類似的方式指定。 例如,要添加多個要搜索頭文件的路徑:

INCLUDEPATH = c:/msdev/include d:/stl/include

更具體的項目文件信息,可以參考Qt的幫助文件。

覺得有用的話,希望大家多多關注評論轉發贊,謝謝!

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年8月9日 上午9:28
下一篇 2023年8月9日 上午9:44

相關推薦

  • 產品 項目管理

    產品項目管理 產品項目管理是指將產品開發作為一個整體,通過有效的規劃和管理,確保項目按時、按預算、按質量完成。在現代商業環境中,產品項目管理已經成為了產品開發中至關重要的一部分。本…

    科研百科 2024年7月24日
    37
  • SealMaker

    SealMaker: 打造個性化 seal 軟件 SealMaker: 打造個性化 seal 軟件 隨著數字化時代的到來,越來越多的企業和個人開始使用 seal 軟件來打造個性化的…

    科研百科 2024年10月5日
    18
  • 物業收費管理軟件,提升物業費收繳率(物業收費管理軟件,提升物業費收繳率的方法)

    物業收費管理軟件,提升物業費收繳率(物業收費管理軟件,提升物業費收繳率的方法) 隨著城市化的快速發展,物業管理變得越來越重要。如何有效管理物業費用,提高物業費的收繳率成為每一個物業…

    科研百科 2024年3月27日
    62
  • 局域網集中殺毒軟件

    局域網集中殺毒軟件:提高網絡安全的新方法 隨著網絡的普及,人們越來越依賴互聯網來進行各種活動。然而,網絡的安全性卻成為了人們普遍關注的問題。尤其是在局域網內,網絡安全更為關鍵。因此…

    科研百科 2024年12月1日
    2
  • 小區物業安全管理手冊(小區物業安全管理手冊內容)

    物業人必備證書、ISO三體系、資質、招投標必備!! 安全管理手冊 目 錄 第一章 安全管理組織機構圖 第二章 安全管理部工作內容概述 一、物業安全管理的定義 二、物業安全管理的要求…

    科研百科 2022年10月19日
    108
  • 全州縣“星級化”管理推動基層黨建提質聚力(基層黨組織星級化建設)

    廣西新聞網全州7月9日訊(通訊員 廖文麗)“從‘四星級’黨支部榮升為‘五星級’黨支部,是上級組織對我們的信任。自從開展農村黨組織‘星級化’管理以來,我們村黨支部隊伍凝聚力、戰斗力更…

    科研百科 2024年6月23日
    40
  • 松原信息系統項目管理

    松原信息系統項目管理 松原市位于中國東北地區,是中國的一個重要城市之一。松原市擁有豐富的自然資源和人文歷史,但同時也面臨著信息管理方面的困境。因此,松原市需要進行信息系統項目管理,…

    科研百科 2024年12月25日
    1
  • 護理能做科研項目嗎

    護理能做科研項目嗎? 隨著科技的不斷進步,護理領域也在不斷地發展和創新。在科研項目中,護理行業已經取得了一些成果,并且在未來的日子里,護理行業將繼續在科研項目中發揮重要的作用。 護…

    科研百科 2025年3月21日
    1
  • 艾默生攜手艾斯本技術公司打造規模化和科技化的高性能軟件領導者

    近日,艾默生和艾斯本技術公司(Aspen Tech)宣布,兩家公司已經達成最終協議,將艾默生工業軟件業務下的OSI Inc.和地質模擬軟件業務與艾斯本技術公司合并,創建一個規模更大…

    科研百科 2023年5月29日
    307
  • 科研項目預算怎么編報

    科研項目預算的編報是科研項目管理中非常重要的一環,它直接關系到項目的成功與否。以下是一些編報科研項目預算的基本步驟和注意事項。 一、明確項目預算目標 在編制科研項目預算之前,需要明…

    科研百科 2025年4月22日
    1