創(chuàng)建一個(gè)項(xiàng)目文件
qmake使用儲(chǔ)存在項(xiàng)目(.pro)文件中的信息來(lái)決定Makefile文件中該生成什么。
一個(gè)基本的項(xiàng)目文件包含關(guān)于應(yīng)用程序的信息,比如,編譯應(yīng)用程序需要哪些文件,并且使用哪些配置設(shè)置。
這里是一個(gè)簡(jiǎn)單的示例項(xiàng)目文件:
SOURCES = hello.cpp
HEADERS = hello.h
CONFIG += qt warn_on release
我們將會(huì)提供一行一行的簡(jiǎn)要解釋?zhuān)唧w細(xì)節(jié)將會(huì)在手冊(cè)的后面的部分解釋。
SOURCES = hello.cpp
這一行指定了實(shí)現(xiàn)應(yīng)用程序的源程序文件。在這個(gè)例子中,恰好只有一個(gè)文件,hello.cpp。大部分應(yīng)用程序需要多個(gè)文件,這種情況下可以把文件列在一行中,以空格分隔,就像這樣:
SOURCES = hello.cpp main.cpp
另一種方式,每一個(gè)文件可以被列在一個(gè)分開(kāi)的行里面,通過(guò)反斜線(xiàn)另起一行,就像這樣:
SOURCES = hello.cpp \
main.cpp
一個(gè)更冗長(zhǎng)的方法是單獨(dú)地列出每一個(gè)文件,就像這樣:
SOURCES += hello.cpp
SOURCES += main.cpp
這種方法中使用“+=”比“=”更安全,因?yàn)樗皇窍蛞延械牧斜碇刑砑有碌奈募皇翘鎿Q整個(gè)列表。
HEADERS這一行中通常用來(lái)指定為這個(gè)應(yīng)用程序創(chuàng)建的頭文件,舉例來(lái)說(shuō):
HEADERS += hello.h
列出源文件的任何一個(gè)方法對(duì)頭文件也都適用。
CONFIG這一行是用來(lái)告訴qmake關(guān)于應(yīng)用程序的配置信息。
CONFIG += qt warn_on release
在這里使用“+=”,是因?yàn)槲覀兲砑游覀兊呐渲眠x項(xiàng)到任何一個(gè)已經(jīng)存在中。這樣做比使用“=”那樣替換已經(jīng)指定的所有選項(xiàng)是更安全的。
CONFIG一行中的qt部分告訴qmake這個(gè)應(yīng)用程序是使用Qt來(lái)連編的。這也就是說(shuō)qmake在連接和為編譯添加所需的包含路徑的時(shí)候會(huì)考慮到Qt庫(kù)的。
CONFIG一行中的warn_on部分告訴qmake要把編譯器設(shè)置為輸出警告信息的。
CONFIG一行中的release部分告訴qmake應(yīng)用程序必須被連編為一個(gè)發(fā)布的應(yīng)用程序。在開(kāi)發(fā)過(guò)程中,程序員也可以使用debug來(lái)替換release,稍后會(huì)討論這里的。
項(xiàng)目文件就是純文本(比如,可以使用像記事本、vim和xemacs這些編輯器)并且必須存為“.pro”擴(kuò)展名。應(yīng)用程序的執(zhí)行文件的名稱(chēng)必須和項(xiàng)目文件的名稱(chēng)一樣,但是擴(kuò)展名是跟著平臺(tái)而改變的。舉例來(lái)說(shuō),一個(gè)叫做“hello.pro”的項(xiàng)目文件將會(huì)在Windows下生成“hello.exe”,而在Unix下生成“hello”。
生成Makefile
當(dāng)你已經(jīng)創(chuàng)建好你的項(xiàng)目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的項(xiàng)目文件那里然后輸入:
Makefile可以像這樣由“.pro”文件生成:
qmake -o Makefile hello.pro
對(duì)于Visual Studio的用戶(hù),qmake也可以生成“.dsp”文件,例如:
qmake -t vcapp -o hello.dsp hello.pro