qmake 3.1(Qt 5.14.0使用)用戶手冊2——快速入門

目錄

從簡單開始

使應用程序可調試

添加特定於平臺的源文件

停止qmake若指定文件不存在

檢查多個條件


本教程教您qmake的基礎知識。 

從簡單開始

假設您已經完成了應用程序的基本實現,並創建了以下文件:

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

您可以在Qt發行版的examples/qmake/tutorial目錄中找到這些文件。 您對應用程序設置唯一瞭解的其他事情是它是用Qt編寫的。 首先,使用您喜歡的純文本編輯器,在examples/qmake/tutorial中創建一個名爲hello.pro的文件。 您需要做的第一件事是添加一些行,這些行告訴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,則目標將是Windows上的hello.exe和Unix上的hello。 如果要使用其他名稱,可以在項目文件中進行設置:

TARGET = helloworld

完成的項目文件應如下所示:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

現在,您可以使用qmake爲您的應用程序生成Makefile。 在命令行的項目目錄中,鍵入以下內容:

qmake -o Makefile hello.pro

然後根據您使用的編譯器鍵入make或nmake。
對於Visual Studio用戶,qmake也可以生成Visual Studio項目文件。 例如:

qmake -tp vc hello.pro

使應用程序可調試

應用程序的發行版不包含任何調試符號或其他調試信息。 在開發過程中,產生具有相關信息的應用程序的調試版本非常有用。 通過將調試添加到項目文件中的CONFIG變量,可以輕鬆實現此目的。例如:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

像以前一樣使用qmake生成一個Makefile。 現在,在調試環境中運行應用程序時,您將獲得有關該應用程序的有用信息。

添加特定於平臺的源文件

經過幾個小時的編碼,您可能已經在應用程序的特定於平臺的部分開始,並決定將依賴於平臺的代碼分開。 因此,您現在有兩個新文件要包含到您的項目文件中:hellowin.cpp和hellounix.cpp。 我們不能僅將它們添加到SOURCES變量中,因爲這會將兩個文件都放在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。 我們可以使用exist()函數檢查文件是否存在。 我們可以使用error()函數停止qmake的處理。檢查名爲main.cpp的文件如下所示:

!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

!符號用於否定測試。 也就是說,如果文件存在,則exist(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()查看語句輸出。 要查看輸出,必須使用適當的控制檯設置來構建應用程序。 我們可以輕鬆地將控制檯放在CONFIG行上,以將該設置包括在Windows的Makefile中。 但是,假設我們只想在Windows上運行並且CONFIG行上已經有debug時添加CONFIG行。 這需要使用兩個嵌套的作用域。 首先創建一個作用域,然後在其中創建另一個作用域。 將要處理的設置放入第二個作用域,如下所示:

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的教程,並準備爲開發項目編寫項目文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章