快速入門

本教程將教授您 qmake 基礎知識。本手冊中的其它話題包含有關使用 qmake 的更多詳細信息。

從簡單開始

假定您已完成應用程序的基本實現,且有創建以下文件:

  • hello.cpp
  • hello.h
  • main.cpp

將找到這些文件在 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。

停止 qmake 若文件不存在

可能不想創建 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 教程,並準備為開發工程編寫工程文件。