构建
摘要
qbs build [options] [[config:configuration-name] [property:value] ...]
描述
在一种或多种配置中构建项目。
您可以指定项目、产品或模块属性,以及为每个配置单独指定一个配置文件。
这是默认命令。
如果构建目录不存在,它将被创建。
有关更多信息,请参阅构建应用程序。
选项
--all-products
处理所有产品,即使它们的builtByDefault
属性为false
。
--build-directory|-d <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
对于debug
和release
不同。
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. 的商标。所有其他商标均为各自所有者的财产。