10月的时候从Qt doc里翻译了一点点,放在我的msn space里,现在看到这个版,贴过来吧.
以前没怎么翻译过,大家需要的话就凑合着看吧.
原文在
http://doc.trolltech.com/4.0/qmake-tutorial.html***************************************************************************
qmake指南
本指南教你使用qmake。建议你在完成本指南后阅读qmake user guide。
----------------------------------------------------------------
轻松起步
----------------------------------------------------------------
假设你刚刚完成一个程序的基本实现,建立了以下文件:
hello.cpp
hello.h
main.cpp
你可以在qt/qmake/examples/tutorial下找到这些文件。之外,你只需要知道这个程序是用Qt实现的。首先,用你习惯的文本编辑器,在qt/qmake/tutorial下建立一个文件hello.pro。第一件你该做的事情就是写几行话,以告诉qmake在工程里包含的源文件和头文件有哪些。
我们先把源文件加入到工程里。这里,你得用SOURCES这个变量。以SOURCES += 开始一个新行,接下来写上hello.cpp,你就得到
SOURCES += hello.cpp
对工程里的每个源文件重复这个过程,直到我们得到
SOURCES += hello.cpp
SOURCES += main.cpp
如果你喜欢类似Make的写法,把所有的文件列在一个位置,那你可以用newline escaping,如下:
SOURCES = hello.cpp \
main.cpp
既然源文件已经加入工程文件了,接下来是头文件。这跟加入源文件是一样的,只不过用的变量名是HEADERS:
完成这些,你的工程文件应该是这样的:
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
target名称会被自动设置;它与工程文件同名,但会加上相应于平台的后缀。比如说,如果工程文件是hello.pro,那在Windows下,target会是hello.exe,而在Unix下,target是hello。如果你想使用不同的名字,你可以在工程文件里指定:
TARGET = helloworld
最后一步是设置CONFIG变量。既然是Qt程序,我们自然要将qt放在CONFIG行,以便qmake能够找到需要链界的相关的库,并将moc和uic的编译语句写入makefile。
完成后的工程文件是这样的:
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 -o hello.dsp hello.pro
----------------------------------------------------------------
使程序可调试
----------------------------------------------------------------
release版本的程序不包含任何调试符号或其他的调试信息。在开发过程中,包含调试相关信息的调试版本是很有用的。通过在工程文件里为CONFIG变量加上debug,可以很轻松实现这一点。
比如:
CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
照之前那样,用qmake产生一个makefile,这样你就可以调试你的程序了。
----------------------------------------------------------------
添加平台相关的源文件
----------------------------------------------------------------
经过几个小时的编码,你可能已经到达程序中与平台相关的部分,并决定使平台依赖的代码保持分离。因此你现在为工程加入两个新的文件-hellowin.cpp和hellounix.cpp。我们不能直接将他们加到SOURCES变量里,因为那会使这两个文件同时都加到makefile里面。所以,我们这里应该使用scope,它的处理取决于qmake当前运行的平台。
看一个简单的、加入与Window平台相关文件的scope:
win32 {
SOURCES += hellowin.cpp
}
因此,如果qmake运行于Windows,它会将hellowin.cpp加入源文件列表。如果qmake运行于任何其他平台,它会略过这一行。现在剩下来的所有工作就是写一个unix平台相关的scope。
完成后,你的工程文件应该看起来大概是这样的:
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()函数来检查文件是否存在。我们可以用erro()函数来停止qmake的执行。这与scope的工作方式是一样的,只是将scope换成了函数。对main.cpp的检查如下:
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
"!"表示检查结果的否定,也就是,如果文件存在,exists(main.cpp)为真,而文件不存在,!exists(main.cpp)为真。
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" )
}
使用qmake产生makefile。如果你暂时把main.cpp重命名,你会看到那条提示信息,qmake也会停止运行。
----------------------------------------------------------------
检查多个条件
----------------------------------------------------------------
假如你使用Windows,你希望在你的程序以命令行运行时,能看到qDebug()语句。如果你不在编译程序时使用console设置,你是看不到那样的输出的。我们简单地把console添加到CONFIG行,就可以在Windows下,使makefile有console设置。但是,假如我们只想在Windows下,在Debug项已经加入到CONFIG的时候,添加console项,这就需要用两个嵌套的scope:产生一个scope,然后在其内部再产生另一个。使得设置在最后一个scope里被处理,就像这样:
win32 {
debug {
CONFIG += console
}
}
嵌套scope可以用冒号写在一块儿,因此最终的工程文件是这样的:
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
}
结束!现在你已经完成了qmake的教程,可以为你的工程写工程文件了。
======================================================
原文来自Qt Assistant, Copyright © 2005 Trolltech Qt 4.0.0
[ 此贴被XChinux在2005-12-03 10:02重新编辑 ]