本教程將教授您 qmake 基礎知識。本手冊中的其它話題包含有關使用 qmake 的更多詳細信息。
假定您已完成應用程序的基本實現,且有創建以下文件:
將找到這些文件在
examples/qmake/tutorial
Qt 分發目錄。您對應用程序設置唯一知道的事情是,它是以 Qt 編寫的。首先,使用喜愛的純文本編輯器,創建文件稱為
hello.pro
in
examples/qmake/tutorial
。需要做的第一件事是添加一些行,告訴 qmake 屬於開發工程的有關源文件和頭文件。
首先將源文件添加到工程文件。為此,需要使用
SOURCES
變量。僅僅開始新行采用
SOURCES +=
並將 hello.cpp 放於其後。應該有的內容像這樣:
SOURCES += hello.cpp
對各工程源文件重復這,直到得到以下結束:
SOURCES += hello.cpp SOURCES += main.cpp
若首選使用像 make 句法,可以像這樣使用換行轉義將所有文件一起列齣:
SOURCES = hello.cpp \
main.cpp
現在源文件已列錶於工程文件中,必須添加頭文件。這些文件的添加方式與源文件準確相同,除瞭使用的變量名是 HEADERS .
一旦完成這,工程文件看起來應該像這樣:
HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
目標名稱是自動設置的。與工程文件名相同,但帶有適於平颱的後綴。例如,若工程文件稱為
hello.pro
,目標將是
hello.exe
在 Windows 和
hello
在 Unix。若想要使用不同名稱,可以在工程文件中設置:
TARGET = helloworld
完成後的工程文件應該看起來像這樣:
HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
現在,可以使用 qmake 為應用程序生成 Makefile。在工程目錄下的命令行,鍵入以下:
qmake -o Makefile hello.pro
然後鍵入
make
or
nmake
取決於所用的編譯器。
對於 Visual Studio 用戶,qmake 還可以生成 Visual Studio 工程文件。例如:
qmake -tp vc hello.pro
應用程序發行版未包含任何調試符號或其它調試信息。在開發期間,産生擁有相關信息的應用程序調試版本很有用。這可以輕鬆達成通過添加
debug
到
CONFIG
變量在工程文件。
例如:
CONFIG += debug HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
如之前一樣使用 qmake 生成 Makefile。現在將獲得有關應用程序的有用信息當在調試環境下運行時。
經幾小時編碼,您可能已開始應用程序的特定平颱部分,並決定單獨從屬平颱代碼。因此,現在有 2 個新文件要包括到工程文件中:
hellowin.cpp
and
hellounix.cpp
。無法僅僅將這些添加到
SOURCES
變量,由於那樣會將 2 個文件都放在 Makefile 中。因此,在這裏需要做的是使用作用域,將根據要為哪個平颱構建進行處理。
添加 Windows 平颱從屬文件的簡單作用域看起來像這樣:
win32 {
SOURCES += hellowin.cpp
}
當為 Windows 構建時,qmake 添加
hellowin.cpp
到源文件列錶。當為任何其它平颱構建時,qmake 僅僅忽略它。現在剩下要做的就是為 Unix 特定文件創建作用域。
當這樣做時,工程文件內容應該看起來像這樣:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
如之前一樣使用 qmake 生成 Makefile。
可能不想創建 Makefile,若某個文件不存在。可以校驗文件是否存在,通過使用 exists() 函數。可以停止 qmake 的處理通過使用 error() 函數。這與作用域工作方式相同。隻需采用函數替換作用域條件。校驗稱為 main.cpp 的文件看起來像這樣:
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
The
!
符號用於否定測試。也就是說,
exists( main.cpp )
為 true 若文件存在,而
!exists( main.cpp )
為 true 若文件不存在。
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
如之前一樣使用 qmake 生成 Makefile。若重命名
main.cpp
臨時,將看到消息,且 qmake 將停止處理。
假設使用 Windows,且想要能夠看到語句輸齣采用
qDebug()
當在命令行運行應用程序時。要看到輸齣,必須采用適當控製颱設置構建應用程序。可以很輕鬆地放置
console
在
CONFIG
行以在 Windows Makefile 中包括此設置。不管怎樣,假設我們隻想添加
CONFIG
行當在 Windows 運行
and
當
debug
已在
CONFIG
行。這要求使用 2 嵌套作用域。首先創建一個作用域,然後在其中創建另一個。將要處理的設置放入第 2 作用域,像這樣:
win32 {
debug {
CONFIG += console
}
}
可以使用冒號將嵌套作用域拼接在一起,因此,最終工程文件看起來像這樣:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
win32:debug {
CONFIG += console
}
就是這樣!現在,您已完成 qmake 教程,並準備為開發工程編寫工程文件。