构建

摘要

qbs build [options] [[config:configuration-name] [property:value] ...]

描述

在一种或多种配置中构建项目。

您可以指定项目产品模块属性,以及为每个配置单独指定一个配置文件

这是默认命令。

如果构建目录不存在,它将被创建。

有关更多信息,请参阅构建应用程序

选项

--all-products

处理所有产品,即使它们的builtByDefault属性为false

--build-directory|-d <directory>

指定一个存储构建工件<directory>

默认值是当前目录,除非preferences.defaultBuildDirectory被设置。

相对路径将相对于当前目录解析。

您可以使用以下特殊值作为占位符:

  • @project扩展为不包括扩展名.qbs的项目文件名。
  • @path扩展为包含项目文件的目录名。

--changed-files <file>[,<file>...]

假设<file>指定的文件以及仅这些文件已更改。

--check-outputs

强制transformer输出工件检查。

验证规则项目中声明的输出工件实际上已创建。

--check-timestamps

强制时间戳检查。

从文件系统检索时间戳,而不是使用存储在构建图中的文件时间戳。

--clean-install-root

在安装之前删除安装基本目录。

--command-echo-mode <mode>

确定在执行命令时显示哪种类型的输出。

<mode>的可能值是:

  • 静默
  • 汇总(默认值)
  • 命令行
  • 命令行及环境

--dry-run|-n

执行干运行。不会执行任何命令,并且不会对构建图进行永久更改。

[--file|-f <文件>]

使用 <文件> 作为项目文件。如果 <文件> 是一个目录并且它包含一个扩展名为 .qbs 的单一文件,则该文件将被使用。

如果没有提供此选项,则行为与使用 -f <工作目录> 相同。

--force-probe-execution

强制重新执行所有 探头 项的配置脚本,而不是使用缓存的数据。

--jobs|-j <n>

使用 <n> 个并发构建作业,其中 <n> 必须是一个大于零的整数。

默认的数字为逻辑核心数。

--job-limits <pool1>:<limit1>[,<pool2>:<limit2>...]

设置特定池的工作限制。有关作业池的更多信息,请参阅此处

--enforce-project-job-limits

通常,通过 JobLimit 项在项目文件中定义的工作限制会被命令行上设置的值覆盖。如果传递此选项,它们反而获得最高优先级。如果有针对特定产品的限制比全局应用的标准限制更合适,请使用它。

--keep-going|-k

如果可能,则在发生错误时继续执行。

--less-verbose|-q

通过减少日志级别,变得更加安静。此选项可以多次给出。过多出现无效果。

如果命令行中除此选项外还有 --log-level 选项,则其值用作降低的基础。

--log-level <level>

使用指定的日志级别。

<level> 的可能值为

  • 错误
  • 警告
  • 信息(默认值)
  • 调试
  • 跟踪

--log-time

记录涉及此命令的操作所花费的时间。

此选项隐含在日志级别 调试 和更高。

此选项与 --show-progress 互斥。

--more-verbose|-v

通过增加日志级别,变得更加详细。此选项可以多次给出。过多出现无效果。

如果命令行中除此选项外还有 --log-level 选项,则其值用作增加的基础。

--no-install

不将任何工件安装为构建过程的一部分。

--products|-p <name>[,<name>...]

仅考虑由<name>指定的产品及其依赖。

--settings-dir <directory>

从指定的<directory>读取所有设置(例如配置文件信息)。如果目录不存在,则会创建。

默认值是系统特定的。例如

  • Linux: $HOME/.config/QtProject/qbs
  • Windows: %APPDATA%\QtProject\qbs
  • macOS: $HOME/Library/Preferences/qbs

--show-progress

显示命令执行的进度。

此选项与--log-time互斥。

--no-fallback-module-provider

如果设置此选项,当依赖项找不到时,Qbs不会回退到基于pkg-config的模块提供者

--wait-lock

无限期等待其他进程释放构建图锁。

此选项通常由生成器使用,它们可能在同一项目的同时重新调用多个Qbs进程。

参数

config:configuration-name

指定要使用的构建配置。

Qbs可以一次构建一个或多个配置的项目,每个配置都有不同的一组参数。对于config参数,具有特殊功能:每个出现都会启动一个新的配置实例,直到下一个config的所有后续参数都分配给该实例。在第一个config出现之前进行的参数分配适用于所有构建配置。在产品和模块内部,可以通过qbs.configurationName检索当前活动的构建配置。

以下示例中,将clang配置文件应用于所有配置,而cpp.optimization对于debugrelease不同。

profile:clang config:debug cpp.optimization:none config:release cpp.optimization:small

config的值确定构建文件夹的名称并影响qbs.buildVariant属性的默认值。Qbs了解config"debug""release",但通常可以选择任何名称。为特殊目的创建配置时,请遵循编程语言中通常使用的有效名称规则。

  • 第一个字符必须是字母(a-z)、下划线(_)或美元符号($)。
  • 后续字符可以是字母、数字、下划线或美元符号。

property:value

项目文件或配置文件中设置的属性值可以在命令行中覆盖。语法是

<prefix>.<property-name>:<property-value>

有关更多信息,请参阅从命令行覆盖属性值

示例

使用默认配置文件构建当前目录中指定的.qbs文件中的应用程序

qbs

使用四个并发构建任务构建应用程序

qbs -j 4

使用名为 Android 的配置文件构建应用程序的默认配置。

qbs build profile:Android

使用不同的 cpp 模块属性构建应用程序,以调试和发布配置。对于调试配置,警告会导致构建失败,而发布配置则会优化构建物件的尺寸。两种配置都使用名为 "qt" 的配置文件。

qbs build profile:qt config:debug modules.cpp.treatWarningsAsErrors:true config:release modules.cpp.optimization:small

©2023 The Qt Company Ltd. 本文档中的内容归其各自所有者版权所有。本文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款提供授权。Qt 和相应的徽标是芬兰及其它国家的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。