您好,登錄后才能下訂單哦!
創建項目文件
項目文件包含qmake構建你的應用程序,庫文件,或插件需要的所有信息。通常,你會在項目文件里使用一系列的聲明指定資源,但是對簡單程序構造的支持,允許你為不同的平臺或環境描述不同的構建過程。
項目文件元素
qmake使用的項目文件格式可以支持簡單和復雜的構建系統使用。簡的項目文件使用簡單的聲明樣式,定義標準的變量,用于指出項目中使用的頭文件和源文件。復雜的項目可以使用控制流程結構來調整構建過程。
下面的章節描述了在項目文件里使用不同類型的元素。
變量
在項目文件里,變量是用于保存字符串的列表。在簡單的項目里,這些變量通知qmake使用相關的配置信息,或者提供文件名和路徑在構建過程使用。
qmake在每個項目文件中查找某些變量,并使用這些內容用于確定什么要寫到 makefile里。舉例,在HEADERS和SOURCES里的變量列表用于告訴qmake在相同目錄里的頭文件和源文件做為項目文件。
變量也可以在內部保存臨時變量列表,現有變量列表可以被新值覆蓋或擴展。
下面的代碼片段說明了值列表是如何賦值給變量的:
HEADERS = mainwindow.h paintwidget.h
在變量里的值列表是通過下邊的方式進行擴展的:
SOURCES = main.cpp mainwindow.cpp \ paintwidget.cpp CONFIG += console
注意:第一個賦值語句只包含指定在同一行里的值是HEADERS變量。第二個賦值語句把SOURCES里不同行的值用反斜杠(\)分開。
CONFIG變量是另一個當生成Makefile時qmake用來使用的特殊變量 。這里討論了它General Configuration .在上面的代碼片段,console被添加到CONFIG已經存在的值列表里。
下邊的表格列了了常用的變量并描述了他們的內容。完整的變量列表及它們的描述,請查看Variables
變量 | 描述 |
CONFIG | 通用的項目配置選項。 |
DESTDIR | 將要存放可執行文件和二進制文件的目錄。 |
FORMS | 被user interface compiler(uic)處理過的UI文件列表。 |
HEADERS | 當構建項目時被使用的頭文件(.h)名稱列表。 |
QT | 在項目中使用的Qt模塊列表 |
RESOURCES | 在最終項目中包含的資源文件(.qrc)列表。更多資源文件的詳細信息查看 The Qt Resource System 。 |
SOURCES | 在構建項目時使用的源文件(.cpp)列表。 |
TEMPLATE | 項目使用的模板。這個決定構建過程輸出的是否是一個應用程序、庫、或者生成一個插件 |
可以通過在變量名前附加$$讀取變量的內容。這樣可以把一個變量的內容賦值給另一個變量。
TEMP_SOURCES = $$SOURCES
$$操作符被廣泛的應用于內置函數,用于操作字符串和值的列表。更多詳細信息,請查看,qmake Language
空格
通常,在變量賦值中用空格分隔值。指定變量中包含空格,你必需用雙引號包圍變量
DEST = "Program Files"
引號文本被視為一個單獨的值保存在變量里。類似的方法用來處理包含空格的路徑,特別是在windows平臺定義INCLUDEPATH和LIBS變量時:
win32:INCLUDEPATH += "C:/mylibs/extra headers"unix:INCLUDEPATH += "/home/user/extra headers"
注釋
可以在項目文件里添加注釋。注釋以#字符開始持續到這一行的結尾。例如:
# 注釋通常開始于一行的頭部,但它 # 也可以在這同行內容的后邊
要在賦值變量時包含#字符,必需使用內置的LITERAL_HASH變量的內容
內置函數和控件流
qmake 提供了大量的內置函數允處理變量內容。在簡單的項目文件里最常用的是include()函數,這個函數用一個文件名做為參數。 給定的文件的內容包含在在項目文件的地方使用include函數。include()函數經常用于包含其它項目文件
include(other.pro)
可以通過作用域(scopes)支持條件結構語句。這種行為和編程語言里的if一樣
win32 { SOURCES += paintwidget_win.cpp }
只有條件為true的時候花括號里的任務才會被執行。在這個例子里,必須設置CONFIG的Win32選項。只有在windows系統上才會自動處理,左邊的大括號必須和條件在同一行
變量上更復雜的操作通常封面要循環提供的內置函數比如find(), unique()和 count()。提供的這些功能,和其它操作字符串和路徑,提供用戶輸入,以及調用擴展工具。使用這些函數更詳細的內容,請查看 qmake Language 。所有函數和它們的描述列表,請查看 Replace Functions 和 Test Functions.
項目模板
TEMPLATE變量,是用來定義項目將要構建的類型。如果它沒有在項目文件里聲明,qmake會假定構建應用程序,并且將為此生成一個適當的Makefile(或者等價的文件)。
下表簡要說明了項目類型變量和成描述qmake生成的每一個文件:
模板 | qmake輸出 |
app (default) | makefile生成一個應用程序 |
lib | makefile生成一個庫 |
aux | makefile什么也不生成。如果沒有編輯器需要調用創建目標。例如你的項目是用解釋型語言編寫的。 注意:這個模板類型只適用于基于Makefile的生成器。特別是,它不會與vcxproj和Xcode生成器一起工作。 |
subdirs | Makefile規則包含使用SUBDIRS變量指定的子文件。每一個子目錄必須包含它自己的項目文件。 |
vcapp | Visual Studio項目文件 生成一個應用程序 |
vclib | Visual Studio項目文件生成一個庫 |
vcsubdirs | Visual Studio解決方案文件要在子目錄生成項目 |
查看 Building Common Project Types 在編寫使用項目模板和庫模板項目的項目文件時的建議。
當使用subdirs模板時,qmake生成一個makefile用來檢查每一個子目錄,處理在子目錄里找到的工程文件,并執行平臺的make 工具生成新的Makefile。SUBDIRS變量被用于包含所有要被處理的子目錄的列表。
常規配置
CONFIG變量指定項目應該配置的選項和功能。
可以在release模式或debug模式或兩種模式一起構建項目。如果debug和release一同指定,最后一個指定的生效。如果你指定 debug_and_release 選項用來構建項目的debug和release兩個版本,qmake會生成包含構建兩個版本規則的Makefile。可以通過以下方式調用:
make all
添加 build_all選項到 CONFIG變量,在規則構建項目時使用這個默認值。
注意:每一個在CONFIG里指定的變量都可以用做條件作用域。你可以使用內置的CONFIG()方法測試某個配置選項是否存在。例如,下邊的代碼展示使用這個方法做為域的條件測試是否只有opengl選項被使用
CONFIG(opengl) { message(Building with OpenGL support.) } else { message(OpenGL support is not available.) }
這允許為release和debug 定義不同的配置 構建。更詳細的信息,請查看Using Scopes。
下邊的選項定義要構建的項目類型。
注意:一些選項只有在相關平臺上使用時才會生效。
選項 | 描述 |
qt | 這個項目是Qt應用程序需要連接Qt庫。你可以為用QT變量控制應用程序所需的所有額外的Qt模塊。這個值是默認添加的,但是你可為非qt項目用qmake刪除它。 |
x11 | 項目是一個X11應用程序或庫。如果目標使用Qt那么這個值是不需要的。 |
應用程序和庫項目模板為你提供了更專業的配置選項用來調整生成過程。選項更詳細的解釋在Building Common Project Types
例如,如果你的應用程序使用Qt庫并且你想在debug模式下構建項目。你的項目文件將包含下邊的代碼:
CONFIG += qt debug
注意:你必需使用"+=",不能使用"=",不然qmake將不能為使用Qt的配置確定哪些設置是你的應用程序需要的。
聲明Qt庫
如果CONFIG變量包含qt值,開啟qmake對Qt應用程序的支持。這樣就可以微調你的應用程序使用的Qt模塊。通過QT的變量可以用于聲明需要的額外的模塊。例如我們可以也下面的方式啟用 XML和network模塊:
QT += network xml
注意:QT默認包含core和gui模塊,所以上邊的聲明把network和XML模塊添加到了默認列表。下邊的賦值刪除了默認模塊,這將導致應用程序的源碼在編譯的時候出現錯誤:
QT = network xml # This will omit the core and gui modules.
如果你想構建沒有gui模塊的項目,你需要用 "-=" 操作刪除它。默認情況下,QT包含core和gui。下面的代碼將導致最小的Qt項目構建:
QT -= gui # Only the core module is used.
你可以添加到QT變量的Qt模塊列表,請查看QT
配置功能
qmake可以提供在功能文件(.prf)里指定的額外的配置功能。這些額外的功能經常為在構建過程使用的自定義工具提供支持。為了能將功能添加到構建過程,把功能的名字(功能文件名的詞干)追加到CONFIG變量后邊
例如,用下邊的代碼qmake可以配置構建過程利用pkg-config提供的外部庫。如D-Bus和ogg庫。
CONFIG += link_pkgconfig PKGCONFIG += ogg dbus-1
關于添加新特性更詳細的信息,請查看 Adding New Configuration Features.
聲明其它庫
除了Qt支持的庫,你可以把其它的庫添加到工程里,你必需在工程文件里指定它們。
qmake可以查找庫所在的路徑,及特定庫鏈接可以被添加到LIBS變量的值列表。你可以指定庫的路徑或者,或者使用UNIX樣式符號指定庫和路徑。
例如,下邊的代碼顯示如何指定庫:
LIBS += -L/user/local/lib -lmath
包含頭文件的路徑也可以使用相同的方式添加到 INCLUDEPATH 變量
例如,添加幾個用于查找頭文件的路徑
INCLUDEPATH = c:/msdev/include d:/stl/include
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。