qmake 3.1(Qt 5.14.0使用)用户手册2——快速入门

本教程教您qmake的基础知识。 

目录

从简单开始

使应用程序可调试

添加特定于平台的源文件

停止qmake若指定文件不存在

检查多个条件


从简单开始

假设您已经完成了应用程序的基本实现,并创建了以下文件:

  • hello.cpp
  • hello.h
  • main.cpp

您可以在Qt发行版的examples/qmake/tutorial目录中找到这些文件。 您对应用程序设置唯一了解的其他事情是它是用Qt编写的。 首先,使用您喜欢的纯文本编辑器,在examples/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

完成的项目文件应如下所示:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

现在,您可以使用qmake为您的应用程序生成Makefile。 在命令行的项目目录中,键入以下内容:

qmake -o Makefile hello.pro

然后根据您使用的编译器键入make或nmake。
对于Visual Studio用户,qmake也可以生成Visual Studio项目文件。 例如:

qmake -tp vc hello.pro

使应用程序可调试

应用程序的发行版不包含任何调试符号或其他调试信息。 在开发过程中,产生具有相关信息的应用程序的调试版本非常有用。 通过将调试添加到项目文件中的CONFIG变量,可以轻松实现此目的。例如:

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

像以前一样使用qmake生成一个Makefile。 现在,在调试环境中运行应用程序时,您将获得有关该应用程序的有用信息。

添加特定于平台的源文件

经过几个小时的编码,您可能已经在应用程序的特定于平台的部分开始,并决定将依赖于平台的代码分开。 因此,您现在有两个新文件要包含到您的项目文件中:hellowin.cpp和hellounix.cpp。 我们不能仅将它们添加到SOURCES变量中,因为这会将两个文件都放在Makefile中。 因此,我们在这里要做的是使用一个范围,该范围将根据我们要构建的平台进行处理。
添加Windows平台相关文件的简单作用域如下所示:

win32 {
    SOURCES += hellowin.cpp
}

当为Windows构建时,qmake将hellowin.cpp添加到源文件列表中。 当为任何其他平台构建时,qmake只会忽略它。 现在剩下要做的就是为Unix专用文件创建作用域。完成此操作后,您的项目文件应如下所示:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}

像以前一样使用qmake生成一个Makefile。

停止qmake若指定文件不存在

如果某个文件不存在,则可能不想创建Makefile。 我们可以使用exist()函数检查文件是否存在。 我们可以使用error()函数停止qmake的处理。检查名为main.cpp的文件如下所示:

!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

!符号用于否定测试。 也就是说,如果文件存在,则exist(main.cpp)为true;如果文件不存在,则!exists(main.cpp)为true。

CONFIG += 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()查看语句输出。 要查看输出,必须使用适当的控制台设置来构建应用程序。 我们可以轻松地将控制台放在CONFIG行上,以将该设置包括在Windows的Makefile中。 但是,假设我们只想在Windows上运行并且CONFIG行上已经有debug时添加CONFIG行。 这需要使用两个嵌套的作用域。 首先创建一个作用域,然后在其中创建另一个作用域。 将要处理的设置放入第二个作用域,如下所示:

win32 {
    debug {
        CONFIG += console
    }
}

可以使用冒号将嵌套范围合并在一起,因此最终的项目文件如下所示:

CONFIG += 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的教程,并准备为开发项目编写项目文件。

qmake 3.1(Qt 5.14.0使用)用户手册2——快速入门qmake 3.1(Qt 5.14.0使用)用户手册2——快速入门 写有意思的代码 发布了16 篇原创文章 · 获赞 0 · 访问量 879 私信 关注
上一篇:CocoaPods问题排查步骤


下一篇:Hexo User Case