董慧妍江蘇省蘇州建設交通學校,江蘇蘇州 215104
以C++編程為例。C編程類似。系統為RedHat Linux 7.2;桌面為KDE ;文本編輯器為kate。假定讀者編寫了兩個文件hello. cpp, world.cpp。hello.cpp為主程序,在工作目錄下建立一個新的子目錄”test”,再在test下建立一個”helloworld”的子目錄,這個目錄將作為存放hello這個程序及其相關文件的地方:
將hello.cpp及world.cpp文件copy至helloworld目錄下。
使用文本編輯器生成一個新文件,命名為makefile,無需加文件后綴。
新文件內容為:
保存該文件。在命令行下打make即可實現對文件的聯合編譯。如果源程序沒有錯誤,編譯成功后,就可以在命令行打入
% ./test
執(zhí)行程序了。
如果加后綴進行編譯
% make clean
表示編譯完成后執(zhí)行rm *.o語句:刪除編譯過程中生成的中間文件。
制作實現對C程序聯合編譯的makefile文件類似,所要修改的地方是:
在makefile文件中,將g++以gcc代替,即修改相應的編譯器(g++是C++的編譯器,而gcc是C的編譯器);并以后綴為.c的C源程序代替后綴為.cpp的C++源程序。
Makefile = target(目標)+dependencies(關聯)+command(命令)
讀者可能已經注意到,makefile文件實際上是由一些目標、關聯和命令(或者說是動作)組合而成的規(guī)則集。Makefile是一個文本形式的數據庫,其中包含一些規(guī)則告訴make編譯哪些文件、怎樣編譯以及在什么條件下去編譯。每條規(guī)則包含以下內容:一個“目標體”(target),即make最終需要創(chuàng)建的東西。包含一個或多個“依賴體”(dependency)的列表,依賴體通常是編譯目標體需要的其它文件為了從指定的依賴體創(chuàng)建除目標體所需執(zhí)行的“命令”(command)的列表。在makefile文件中,出現命令的該行行首總是以制表符開始,而不是空格,這要注意。
qmake是Trolltech公司創(chuàng)建的用來為不同的平臺和編譯器書寫Makefile的工具。 qmake是用來為不同的平臺的開發(fā)項目創(chuàng)建makefile的Trolltech開發(fā)一個易于使用的工具。qmake簡化了makefile的生成,所以為了創(chuàng)建一個makefile只需要一個只有幾行信息的文件。qmake可以供任何一個軟件項目使用,而不用管它是不是用Qt寫的,盡管它包含了為支持Qt開發(fā)所擁有的額外的特征。
qmake基于一個項目文件這樣的信息來生成makefile。項目文件可以由開發(fā)者生成。項目文件通常很簡單,但是如果需要它是非常完善的。不用修改項目文件,qmake也可以為Microsoft Visual Studio生成項目。
QMAKESPEC環(huán)境變量
舉例來說,如果你在Windows下使用Microsoft Visual Studio,然后你需要把QMAKESPEC環(huán)境變量設置為win32-msvc。如果你在Solaris上使用gcc,你需要把QMAKESPEC環(huán)境變量設置為solaris-g++。
在qt/mkspecs中的每一個目錄里面,都有一個包含了平臺和編譯器特定信息的qmake.conf文件。這些設置適用于你要使用qmake的任何項目,請不要修改它,除非你是一個專家。例如,假如你所有的應用程序都必須和一個特定的庫連接,你可以把這個信息添加到相應的qmake.conf文件中。
項目(.pro)文件
一個項目文件是用來告訴qmake關于為這個應用程序創(chuàng)建makefile所需要的細節(jié)。例如,一個源文件和頭文件的列表、任何應用程序特定配置、例如一個必需要連接的額外庫、或者一個額外的包含路徑,都應該放到項目文件中。
使用qmake創(chuàng)建一個項目文件
qmake使用儲存在項目(.pro)文件中的信息來決定Makefile文件中該生成什么。
一個基本的項目文件包含關于應用程序的信息,比如,編譯應用程序需要哪些文件,并且使用哪些配置設置。
這里是一個簡單的示例項目文件:
SOURCES = hello.cpp
HEADERS = hello.h
CONFIG += qt warn_on release
SOURCES = hello.cpp
這一行指定了實現應用程序的源程序文件。在這個例子中,恰好只有一個文件,hello.cpp。大部分應用程序需要多個文件,這種情況下可以把文件列在一行中,以空格分隔,就像這樣:
SOURCES = hello.cpp main.cpp
當你已經創(chuàng)建好你的項目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的項目文件那里然后輸入:
Makefile可以像這樣由“.pro”文件生成:
qmake -o Makefile hello.pro
對于Visual Studio的用戶,qmake也可以生成“.dsp”文件,例如:
qmake -t vcapp -o hello.dsp hello.pro
[1]李善平,鄭扣根.Linux操作系統及實驗教程[M].北京:機械工業(yè)出版社,1999,10.
[2]St roustrup B. Learning Standard C++ as a New
Language. C/C++ Users Journal,1999,5:43-54.