qmake使用手册

发布时间 : 星期一 文章qmake使用手册更新完毕开始阅读

项目文件就是纯文本(比如,可以使用像记事本、vim和xemacs这些编辑器)并且必须存为“.pro”扩展名。应用程序的执行文件的名称必须和项目文件的名称一样,但是扩展名是跟着平台而改变的。举例来说,一个叫做“hello.pro”的项目文件将会在Windows下生成“hello.exe”,而在Unix下生成“hello”。 生成Makefile

当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入: Makefile可以像这样由“.pro”文件生成:

qmake -o Makefile hello.pro

对于Visual Studio的用户,qmake也可以生成“.dsp”文件,例如:

qmake -t vcapp -o hello.dsp hello.pro

qmake教程介绍

这个教程可以教会你如何使用qmake。我们建议你看完这个教程之后读一下qmake手册。 开始很简单

让我们假设你已经完成了你的应用程序的一个基本实现,并且你已经创建了下述文件:

? ? ?

hello.cpp

hello.h main.cpp

你可以在qt/qmake/example中发现这些文件。你对这个应用程序的配置仅仅知道的另一件事是它是用Qt写的。首先,使用你所喜欢的纯文本编辑器,在qt/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

最后一步是设置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。 使应用程序可以调试

应用程序的发布版本不包含任何调试符号或者其它调试信息。在开发过程中,生成一个含有相关信息的应用程序的调试版本是很有用处的。通过在项目文件的CONFIG变量中添加“debug”就可以很简单地实现。 例如:

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

像前面一样使用qmake来生成一个Makefile并且你就能够调试你的应用程序了。

添加特定平台的源文件

在编了几个小时的程序之后,你也许开始为你的应用程序编写与平台相关的部分,并且决定根据平台的不同编写不同的代码。所以现在你有两个信文件要包含到你的项目文件中-hello_win.cpp和hello_x11.cpp。我们不能仅仅把这两个文件放到SOURCES变量中,因为那样的话会把这两个文件都加到Makefile中。所以我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。

联系合同范文客服:xxxxx#qq.com(#替换为@)