美文网首页Qt QML 杂记
qmake 手册 002 简单入门

qmake 手册 002 简单入门

作者: 赵者也 | 来源:发表于2020-05-07 11:58 被阅读0次

本节内容将向大家介绍 qmake 的一些基础知识。本手册中的其他主题将包含有关使用 qmake 的更详细内容。

简单起始

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

hello.cpp
hello.h
main.cpp

我们可以在 Qt 发行版的 examples/qmake/tutorial 目录中找到这些文件。 关于应用程序的设置功能,我们所需知道的另一件事是它本身是用 Qt 编写的。首先,使用我们喜欢的纯文本编辑器,在 examples/qmake/tutorial 中创建一个名为 hello.pro 的文件。 我们需要做的第一件事是添加一些脚本,这些脚本将告诉 qmake 有关开发项目的源文件和头文件信息。

我们首先将源文件添加到项目文件中。 为此,我们需要使用 SOURCES 变量。我们可以新起一行,并使用 SOURCES += hello.cpp 的方式即可添加 hello.cpp 作为源文件。

SOURCES +=  hello.cpp

我们对项目中的每个源文件重复这个步骤:

SOURCES += hello.cpp
SOURCES += main.cpp

如果我们更喜欢使用 Make-like 的语法:把所有的文件都在一行中列出,我们可以像下面这样使用换行转义的方式:

SOURCES = hello.cpp \
          main.cpp

现在源文件已列在项目文件中,接下来我们添加头文件。头文件的添加方式与源文件完全相同,只是我们使用的变量名是 HEADERS。完成此操作后,我们的项目文件类似下面所示:

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

目标文件名称是自动设置的。它一般与项目文件名相同,并带有适合平台的后缀。例如,如果项目文件被称为 hello.pro,目标文件的名称在 Windows 平台上将是 hello.exe,而在 Unix 平台上将是 hello。如果我们想使用一个自定义的名字,我们可以在项目文件中,使用 TARGET 变量,并添加类似下面的脚本进行设置(建议将这个设置放在项目文件的起始处):

TARGET = helloworld

之后完成的项目文件类似下面这样:

TARGET = helloworld

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

现在可以使用 qmake 为这个应用程序生成 Makefile 文件了。启动命令行,并进入项目文件所在的目录中,然后键入以下内容:

qmake -o Makefile hello.pro

然后我们可以键入 make(或 nmake)来完成编译。

对于 Visual Studio 用户,qmake 也可以用来生成 Visual Studio 项目文件。 其命令如下:

qmake -tp vc hello.pro

使程序可调式

应用程序的发行版一般不需要包含任何调试符号或其他调试信息。但是在开发过程中,使用应用程序带有相关信息的调试版本非常有用。 通过将 debug 添加给项目文件中的 CONFIG 变量,可以轻松实现此目的。例如:

TARGET = helloworld

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

CONFIG += debug

我们还是像之前一样使用 qmake 来生成 Makefile。现在,在调试环境中运行应用程序时,我们将获得有关应用程序有用的调试信息。

添加平台相关的源文件

现在假设我们有两个新文件要包含到项目文件中:hellowin.cpp 和 hellounix.cpp。我们不能仅仅将它们添加到 SOURCES 变量中就完事了,因为这会将两个文件都放在 Makefile 中。 因此,我们在这里需要做的是使用一个作用域,它将根据我们为哪个平台构建而被进入并处理内部的脚本。

为 Windows 添加平台相关文件的简单作用域示例如下:

win32 {
    SOURCES += hellowin.cpp
}

在为 Windows 平台构建时,qmake 将 hellowin.cpp 添加到源文件列表中。在为任何其他平台构建时,qmake 都会忽略它。现在剩下的工作就是为特定于 unix 平台的文件创建一个作用域。

完成之后,我们的项目文件将类似下面这样:

TARGET = helloworld

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

CONFIG += debug

win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}

接下来就是像以前一样使用 qmake 来生成 Makefile。

如果某文件不存在则停止 qmake

如果某个文件不存在,我们可能就不想创建 Makefile 了。我们可以使用 exists() 函数检查文件是否存在。我们可以使用 error() 函数停止 qmake 的处理。这与作用域的工作方式相同。只需用函数替换作用域条件。对 main.cpp 文件的检查的示例如下:

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

! 符号用于对检测结果取反。也就是说,如果文件存在,exists( main.cpp ) 为真;如果文件不存在,!exists( main.cpp ) 为真。

TARGET = helloworld

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

CONFIG += debug

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 添加到 CONFIG 变量中很容易地实现这个设置,这样在 Windows 的 Makefile 中就会包含此设置。但是,我们假设只在运行 Windows 和已经在 CONFIG 变量上添加了 debug 时才添加 console 到 CONFIG 变量 。这时就需要使用两个相互嵌套的作用域。我们把要处理的设置放在第二个左右域内,像下面这样:

win32 {
    debug {
        CONFIG += console
    }
}

嵌套的作用域可以用冒号连接在一起,所以最终的项目文件会类似下面这样:

TARGET = helloworld

HEADERS = hello.h

SOURCES = hello.cpp \
          main.cpp

CONFIG += debug

win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}

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

win32:debug {
    CONFIG += console
}

如大家所见,这还是挺容易的!现在,我们已经完成了qmake 的入门教程,并可以开始为开发项目编写项目文件了。

相关文章

  • qmake 手册 002 简单入门

    本节内容将向大家介绍 qmake 的一些基础知识。本手册中的其他主题将包含有关使用 qmake 的更详细内容。 简...

  • qmake 手册 007 qmake 语言

    qmake 手册 007 qmake 语言 许多 qmake 项目文件使用 name = value 和 name...

  • qmake 手册 005 运行 qmake

    qmake 手册 005 运行 qmake qmake 的行为可以通过在命令行上指定各种选项来定制。它们允许对构建...

  • qmake 手册 010 配置 qmake

    属性 qmake 拥有一个用于持久配置的系统,它允许我们在 qmake 中设置一个属性,并在每次调用 qmake ...

  • qmake 手册 003 创建项目文件

    qmake 手册 003 创建项目文件 项目文件包含 qmake 构建应用程序、库或插件所需的所有信息。通常,我们...

  • qmake 手册 000 简介

    qmake 手册 qmake 工具有助于简化跨平台的开发项目的构建过程。它用于自动生成 Makefile,借助 q...

  • qmake 手册 013 替换函数

    qmake手册013替换函数 qmake 提供了在配置过程中处理变量内容的函数。这些函数称为替换函数。通常,它们返...

  • qmake 手册 011 参考手册

    参考部分详细描述了qmake 项目文件中可用的变量和函数 1. 变量参考手册 变量 描述 qmake 在为项目配置...

  • qmake 手册 001 概述

    概述 qmake 工具为我们提供了一个面向项目的构建系统,用于管理应用程序、库和其他组件的构建过程。利用 qmak...

  • qmake 手册 012 变量

    qmake 的基本行为受到定义于每个项目中的构建过程的变量声明的影响。其中一些声明资源(如头文件和源文件)对于每个...

网友评论

    本文标题:qmake 手册 002 简单入门

    本文链接:https://www.haomeiwen.com/subject/wztwghtx.html