命令和JavaScript命令

一个 命令 是Qbs在构建时执行的内容。在语言中,它由一个类型为 Command 的对象表示,用于运行进程,或者由 JavaScriptCommand 表示,用于执行任意JavaScript代码。命令总是在 Rule 的准备脚本中创建。

命令

Command 表示将在构建时调用的进程。它的构造函数参数是运行的二进制文件和一个命令行参数列表。例如

var insaneCommand = new Command("rm", ["-r", "/"]);

Rule 项文档显示了在上下文中的 Command

JavaScript命令

JavaScriptCommand 表示将在构建时运行的JavaScript代码块。例如

var cmd = new JavaScriptCommand();
cmd.apology = "Sorry.";
cmd.sourceCode = function() {
    console.info("I'm a rather pointless command.");
    console.info(apology);
};

在源代码内部,特殊的标识符 projectproduct(分别提供对项目属性和产品属性的访问)以及 inputsoutputs(输入和输出)是可用的。正如示例所示,可以在命令对象上设置任意属性,然后在源代码中使用它们。这种方法通常用于将准备脚本中的值传递给命令。有关在上下文中显示 JavaScriptCommandRule 项文档。

属性

常用属性

以下属性在 CommandJavaScriptCommand 中都是可用的。

属性类型默认描述
description字符串当命令执行时显示的消息。
extendedDescription字符串当命令执行时显示的详细描述。
highlight字符串一个可用于影响 description 显示方式的标记。在原则上,值是任意的。如果输出设备是终端,Qbs命令行工具理解以下值并将其映射到不同的颜色:
  • "compiler" 表示该命令处理源代码
  • "linker" 表示该命令链接对象
  • "codegen" 表示该命令生成源代码
  • "filegen" 表示该命令创建任意文件

所有其他值都被映射到默认颜色。

jobPool字符串确定命令将使用哪个工作池。默认为一个空字符串,表示全局工作池。更多信息请参阅 此处此处
silent布尔型false一个标志,用于控制是否打印 description。将其设置为 true 以隐藏用户不需要知道的操作命令。

注意: 如果此属性设置为 false,则 description 必须不为空。

timeout整数-1命令执行的秒数限制。如果命令在超时时间内未完成,则取消执行。在 Command 命令的情况下,请求进程终止。如果进程在 3 秒内未终止,则将其杀死。小于或等于 0 的值表示无超时。
此属性是从 Qbs 1.15 版本开始引入的。

命令属性

属性类型默认描述
参数stringList调用命令的参数列表。显式设置此属性会覆盖在实例化对象时提供的参数列表。
环境变量stringList添加到通用构建环境的环境变量列表。它们以 "varName=value" 的形式提供为一组字符串。
最大退出码整数0将过程的最大退出码解释为成功的值。设置此值通常很少需要,因为所有表现良好的应用程序都会使用除零以外的值来表示失败。
程序字符串undefined要调用的二进制文件。显式设置此属性会覆盖在实例化对象时提供的路径。
相关环境变量stringListundefined被调用的二进制文件认为是环境变量的名称。如果这些变量中的任何一个在构建环境中变化,则即使输入文件仍然是更新的,命令也将重新执行。
响应文件阈值整数在 Windows 上为 32000,在其他地方为 -1如果此值大于零且小于完整命令行的长度,并且如果 responseFileUsagePrefix 不为空,则命令行的内容将被移动到临时文件中,该文件的路径成为整个参数列表的内容。然后,程序应从该文件读取完整的参数列表。此机制主要用于解决 Windows 对命令行最大长度的限制,并且仅与明确支持它的程序一起使用。
响应文件参数索引整数0要包含在响应文件中的第一个参数的索引。例如,这可以与需要一个编译器路径作为第一个参数的编译器包装器一起使用。
响应文件使用前缀字符串告知 程序 剩余参数是一个包含实际命令行的文件路径的前缀。
stderrFilterFunction函数undefined接受命令的实际标准错误输出作为输入的函数,并返回一个表示为命令标准错误输出的字符串。如果未设置,则输出显示为未经过滤。
stdoutFilterFunction函数undefined接受命令的实际标准输出作为输入的函数,并返回一个表示为命令标准输出的字符串。如果未设置,则输出显示为未经过滤。
工作目录字符串程序的工作目录。
stdoutFilePath字符串undefined将过滤后的标准输出内容重定向到 stdoutFilePath。如果 stdoutFilePath 未定义,则过滤后的标准输出会被转发给 Qbs,可能打印到控制台。
stderrFilePath字符串undefined将过滤后的标准错误输出内容重定向到 stderrFilePath。如果 stderrFilePath 未定义,则过滤后的标准错误输出会被转发给 Qbs,可能打印到控制台。

JavaScript命令属性

属性类型默认描述
源代码函数undefined要执行的 JavaScript 函数。

©2023 Qt公司有限公司所载文档贡献的版权归属其所有者。所提供的文档在自由软件基金会发布的GNU自由文档许可证版本1.3的条款下获得授权。Qt及其相应标志是芬兰及/或其他国家全球的商标。所有其他商标均为其所有者的财产。