可以通过在命令行上指定各种选项来自定义qmake运行时的行为。这些选项允许对构建过程进行微调,提供有用的诊断信息,并可以用于指定项目的目标平台。

1 命令语法

运行qmake的语法采用以下简单形式:

qmake [mode] [options] files

注意:如果通过包管理器安装Qt,二进制文件可能为qmake6。

2 操作模式Operating Modes

qmake支持两种不同的操作模式。在默认模式下,qmake使用项目文件中的信息生成Makefile,但也可以使用qmake生成项目文件。如果要明确设置模式,必须在所有其他选项之前指定它。模式可以是以下两个值之一:

  • -makefile:qmake输出将是一个Makefile。
  • -project:qmake输出将是一个项目文件。

注意:创建的文件可能需要编辑。例如,根据项目所需的模块,添加QT变量以适应项目。

可以使用选项来指定通用和特定于模式的设置。仅适用于Makefile模式的选项在“Makefile模式选项”部分中描述,而影响项目文件创建的选项在“项目模式选项”部分中描述。

3 文件

文件参数表示一个或多个项目文件的列表,用空格分隔。

3.1 通用选项General Options

可以在命令行上指定各种选项以自定义构建过程,并覆盖您平台的默认设置。以下基本选项提供有关使用qmake的帮助,指定qmake将写入输出文件的位置,并控制将写入控制台的调试信息级别:

  • -help:qmake将介绍这些功能并提供一些有用的帮助。
  • -o file:qmake输出将定向到file。如果未指定此选项,qmake将尝试使用适当的文件名来保存其输出,具体取决于其运行模式。 如果指定“-”,则输出将定向到stdout。
  • -d:qmake将输出调试信息。多次添加“-d”将增加详细程度。 项目的模板通常由项目文件中的TEMPLATE变量指定。您可以使用以下选项来覆盖或修改此模板:

  • -t tmpl:qmake将使用tmpl覆盖任何已设置的TEMPLATE变量,但仅在处理.pro文件后才会生效。
  • -tp prefix:qmake将在TEMPLATE变量前添加prefix。

可以微调警告信息级别,以帮助您在项目文件中查找问题:

  • -Wall:qmake将报告所有已知警告。
  • -Wnone:qmake将不会生成任何警告信息。
  • -Wparser:qmake将仅生成解析器警告。这将警告您项目文件解析中的常见问题和潜在问题。
  • -Wlogic:qmake将警告项目文件中的常见问题和潜在问题。例如,qmake将报告列表中文件的多次出现和缺失文件。

4 Makefile模式选项

在Makefile模式下,qmake将生成用于构建项目的Makefile。此外,在此模式下还可以使用以下选项来影响项目文件的生成方式:

  • -after:qmake将处理在指定文件后命令行上给出的赋值。
  • -nocache:qmake将忽略.qmake.cache文件。
  • -nodepend:qmake将不会生成任何依赖关系信息。
  • -cache file:qmake将使用file作为缓存文件,忽略找到的任何其他.qmake.cache文件。
  • -spec spec:qmake将使用spec作为平台和编译器信息的路径,并忽略QMAKESPEC的值。 您还可以在命令行上传递qmake赋值。这些赋值在指定的文件之前进行处理。例如,以下命令从test.pro生成一个Makefile:
qmake -makefile -o Makefile "CONFIG+=test" test.pro

但是,一些指定的选项可以省略,因为它们是默认值:

qmake "CONFIG+=test" test.pro

如果您确定要在指定的文件之后处理变量,那么可以传递“-after”选项。当指定此选项时,所有在“-after”选项之后命令行上的赋值将延迟到解析指定的文件之后才会处理。

5 项目模式选项

在项目模式下,qmake将生成一个项目文件。此外,在此模式下还可以使用以下选项:

  • -r:qmake将递归查找提供的目录。
  • -nopwd:qmake将不会在当前工作目录中查找源代码,它只会使用指定的文件。

在此模式下,文件参数可以是文件或目录的列表。如果指定了目录,它将包含在DEPENDPATH变量中,并且相关代码将包含在生成的项目文件中。如果给出文件,它将根据其扩展名附加到正确的变量中。例如,UI文件将添加到FORMS中,而C++文件将添加到SOURCES中。

您还可以在此模式下在命令行上传递赋值。这样做时,这些赋值将放在生成的项目文件的最后。

Running qmake: https://doc.qt.io/qt-6/qmake-running.html