第2章 入门
本节教程教您qmake的基础知识。本手册中的其他主题包含了关于使用qmake的更详细信息。
从简单开始
假设您刚刚完成了应用程序的基本实现,并且创建了以下文件:
hello.cpp
hello.h
main.cpp
您将在Qt发行版的 examples/qmake/tutorial
目录中找到这些文件。关于该应用程序的设置,您唯一需要知道的另一件事是它是用Qt编写的。首先,使用您最喜欢的文本编辑器,在 examples/qmake/tutorial
中创建一个名为hello.pro
的文件。您需要做的第一件事是添加几行代码,以告诉qmake作为开发项目中的源文件和头文件。
我们首先将源文件添加到项目文件中。为此,您需要使用SOURCE
变量。只要用SOURCE +=
开始一个新的行,并在它后面放上hello.cpp。现在你应该有了类似如下的内容:
我们对项目中的每个源文件重复此操作,直到我们最终得到以下内容:
如果您喜欢使用类似make的语法,一次性列出所有文件,您可以使用换行符转义如下:
现在,源文件已列在项目文件中,则必须添加头文件,添加方式与源文件的添加方式完全相同,只是我们使用的变量名是HEADERS
。
一旦您完成了此操作,您的项目文件应该是这样的:
系统将自动设置目标名称。它与项目文件名相同,但具有适合于该平台的后缀。例如,如果项目文件被称为hello.pro
,则目标在Windows上是hello.exe,在Unix上是hello。如果您想使用一个不同的名称,您可以在项目文件中设置它:
完成的项目文件应该如下:
现在可以使用qmake为应用程序生成Makefile。在命令行中的项目目录中,键入以下内容:
然后根据您使用的编译器键入make
或nmake
。
对于VisualStudio用户,qmake还可以生成VisualStudio项目文件。例如:
使应用程序可调试
应用程序的release版本不包含任何调试符号或其他调试信息。在开发过程中,生成一个包含相关信息的应用程序的调试版本是很有用的。通过在项目文件中的CONFIG
变量中添加debug
,可以很容易地实现这一点。
例如:
像以前一样使用qmake来生成一个Makefile。在调试环境中运行应用程序时,您将获得有关应用程序的有用信息。
添加特定于平台的源文件
经过几个小时的编码之后,您可能已经开始使用应用程序中特定于平台的部分,并决定将依赖于平台的代码分开。所以你现在有两个新文件要包含到你的项目文件中:hellowin.cpp
和hellounix.cpp
。我们不能将这些添加到SOURCE
变量,因为这会将两个文件都放在Makefile中。所以,我们在这里需要做的是使用一个作用域,它将根据我们正在构建的平台进行处理。
一个为Windows添加平台依赖文件简单作用域的代码如下所示:
在为窗口构建时,qmake会将hellowin.cpp
添加到源文件列表中。当为任何其他平台构建时,qmake只会忽略它。现在所要做的就是为特定于unix的文件创建一个作用域。
当您这样做后,您的项目文件应该是这样的:
像以前一样使用qmake来生成一个makefile。
如果文件不存在,则停止qmake
如果某个文件不存在,则可能不想创建Makefile。我们可以通过使用exists()
函数来检查一个文件是否存在。我们可以通过使用error()
来阻止qmake的处理。这种工作方式与范围相同。只需用该函数替换作用域条件即可。检查一个名为main.cpp
的文件,如下所示:
这个!
符号用于否定该测试。也就是说,如果文件存在,exists(main.cpp)
为真,如果文件不存在,!exists(main.cpp)
为真。
像以前一样使用qmake来生成生成文件。如果您暂时重命名main.cpp
,您将看到消息,而qmake将停止处理。
检查多个条件
假设您使用Windows,并且您希望在命令行上运行应用程序时能够看到使用qDebug()
的语句输出。若要查看输出,您必须使用适当的控制台设置来构建应用程序。我们可以将console
放在CONFIG
里面,以便在Windows上的Makefile 中包含此设置。然而,假设当我们只想在Windows上运行才添加debug
这一项时,这就需要使用两个嵌套的作用域。首先创建一个作用域,然后在其中创建另一个作用域。将要处理的设置放在第二个作用域内,如下所示:
嵌套的作用域可以使用冒号连接在一起,所以最终的项目文件如下所示:
就是这样!恭喜您现在已经完成了qmake的教程,并且已经准备好为您的开发项目编写项目文件了。
最后更新于