簡單例子linux
假設已經實現以下程序:編程
hello.cpp
hello.h
main.cppwindows
首先,使用編輯器,在上述文件目錄下建立文件hello.pro.而後加入幾行語句告訴qmake項目中的源文件和頭文件。編輯器
使用 SOURCES 變量 加入源文件,例如:函數
SOURCES +=hello.cpp
加入全部源文件測試
SOURCES += hello.cpp
SOURCES += main.cpp
也可使用Make-like語法形式。以下:ui
SOURCES = hello.cpp\
main.cpp
加入頭文件spa
HEADERS += hello.h SOURCES +=hello.cpp SOURCES += main.cpp
target 是自動設定的;就像project file 同樣。可是不一樣的平臺有不一樣的後綴。好比,若是project file 是 hello.pro,那麼在Windows上target就是 hello.exe,而linux上則是 hello.若是使用不一樣的名稱的話,能夠這樣設置project file:命令行
TARGET = helloworld
設置 CONFIG變量的最後一步。因爲是QT應用程序,必須把qt放入CONFIG中,這樣qmake就會生成相應的連接庫,並確保創建的moc和uic包含在生成的Makefile中。debug
最終的project file應該像這樣:
CONFIG +=qt HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
如今就可使用qmake來爲應用程序生成Makefile。在項目目錄下,輸入命令行,以下:
qmake -o Makefile hello.pro
而後根據使用的編譯器輸入make和nmake
對於Visual Studio用戶來講,qmake也會生成.dsp和.vcproj文件,好比:
qmake -tp vc hello.pro
使應用程序可調試
release版本的應用程序不包含任何調試符號或者其餘的調試信息。在開發過程當中每每須要調試版本提供相關的信息。這個很容易實現,只要在CONFIG變量中加入debug
例如:
CONFIG += qt debug HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
像以前同樣使用qmake產生Makefile,能夠在debugging環境下,運行程序,獲得有用的信息。
加入特定平臺的源文件
在經過幾個小時的編程後,有可能開始寫特定平臺部分,並且須要與其餘代碼獨立分開。有兩個新文件:hellowin.cpp和hellolinux.cpp.不能把它們都加入SOURCES變量中,這樣兩個文件都會在Makefile中。因此在運行qmake時,須要使用一個範圍根據獨立平臺來處理。
一個適用於windows的簡單範圍,以下:
win32{ SOURCES += hellowin.cpp }
若是qmake運行在Windows上,將hellowin.cpp加入到源文件列表中。若是qmake運行在其餘平臺上,就會被忽略。
如今剩下的就是爲Unix-specific 文件建立一個範圍,以下:
CONFIG += qt debug HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp win32 { SOURCES += hellowin.cpp } unix { SOURCES += hellounix.cpp }
像以前同樣使用qmake生成Makefile
若是文件不存在中止qmake
若是某些文件不存在,可能就不想建立Makefile.可使用exists()函數來檢查文件是否存在。使用error()函數來中止qmake.這和scopes的效果是同樣的。簡單的使用函數來代替scope 條件
檢查main.cpp是否存在,以下:
!exists(main.cpp) { errror("No main.cpp file found") }
!符號用來否認測試;例如,exists(main.cpp) 返回 true 則文件存在,若是 !exists(main.cpp)返回true,則文件不存在。
CONFIG += qt 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") }
像以前同樣生成makefile,若是重命名main.cpp,將會看到一些信息而且qmake會中止。
多條件檢查
假設使用Windows ,在命令行運行應用程序時,但願能看到qDebug()的聲明輸出。若是構建的應用程序沒有合適的控制設置,就不能看到輸出。只要在CONFIG中加入console,makefile中就會有設置。然而,若是debug已經加入了CONFIG中,想在運行時,加入console。須要使用嵌套範圍,例如:
win32 { debug { CONFIG +=console } }
嵌套範圍使用冒號連在一塊兒,最終的項目以下:
CONFIG += qt 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 }