qbs

包含一般属性。 更多信息...

Qbs 1.0

属性

详细说明

qbs 模块在每个产品中都是隐式加载的。它包含当前构建环境的属性,独立于使用的编程语言和工具链。

安装属性

通常,您使用 Group 元素来指定文件的安装目标目录。要安装一组文件,将 Group 的 qbs.install 属性设置为 trueqbs.installDir 的值指定了文件将要安装的目录路径。您可以指定所有安装目录的基础目录作为 qbs.installPrefix 的值。

例如,以下属性指定了在 Windows 和 Linux 上安装一组 QML 文件和应用程序可执行文件的位置

Application {
    name: "myapp"
    Group {
        name: "Runtime resources"
        files: "*.qml"
        qbs.install: true
        qbs.installDir: condition: qbs.targetOS.includes("unix")
            ? "share/myapp" : "resources"
    }
    Group {
        name: "The App itself"
        fileTagsFilter: "application"
        qbs.install: true
        qbs.installDir: "bin"
    }
    qbs.installPrefix: condition: qbs.targetOS.includes("unix")
        ? "usr/local" : "MyApp"
}

在 Windows 上,QML 文件最终将安装到 MyApp\resources,应用程序可执行文件安装到 MyApp\bin,例如在 C:\Program Files 之下。在 Linux 上,QML 文件将安装到 /usr/local/share/myapp,可执行文件安装到 /usr/local/bin

默认情况下,qbs.installRoot 在构建目录中创建用于打包程序的 install-root 目录。这是一个临时目录,通常在运行应用时不可用,因此不应在项目文件中设置。您可以从命令行覆盖默认值,如安装文件中所述。

属性复用

以下属性是针对 产品复用 特定的

属性文档

architecture : 字符串

目标平台的处理器体系结构。

undefined 表示目标平台是体系结构无关的(例如 CLR 或 JVM)。

该属性通常在配置文件中设置。

常用值包括:"x86""x86_64""arm"

支持的处理器体系结构

此表描述了体系结构属性的可能的值

体系结构描述
"78k"由 Renesas Electronics 制造的基于 16 位和 8 位累加器寄存器银行 CISC 架构微控制器系列
"arm"由 Acorn RISC Machine 开发的 32 位 RISC 架构计算机处理器

注意:ARM 架构有众多子变体。一些特殊的 Qbs 模块将它们区分开来,使用了如 "armv7a" 这样的值。请查阅相应的模块特定文档以获取有关使用何种值的信息。

"arm64"由 Acorn RISC Machine 开发的 64 位 RISC 架构计算机处理器
"avr"由 Microchip Technology 制造的 8 位修改过的哈佛 RISC 架构微控制器系列
"avr32"由 Atmel 开发的 32 位 RISC 微控制器系列
"c166"由 Infineon 开发的 16 位架构微控制器系列
"cr16"由 National Semiconductor 开发的 16 位紧凑型 RISC 架构微控制器系列
"e2k"由莫斯科 SPARC 技术中心(MCST)和 TSMC 制造的 512 位俄罗斯宽 VLIW 微处理器
"hcs8"Freescale Semiconductor 的 8 位 HC08 和 S08 微控制器系列
"hcs12"Freescale Semiconductor 的 16 位 HC12 和 S12 微控制器系列
"hppa"Hewlett-Packard 开发的 64 位 PA-RISC 处理器架构
"ia64"由 Intel 开发,属于 IA-64 家族的 64 位 ISA 架构处理器
"m16c"由 Renesas Electronics 制造的高 ROM 代码效率的 16 位 CISC 微控制器
"m32c"由 Renesas Electronics 制造的具有高 ROM 代码效率的 32 位和 16 位 CISC 微控制器
"m32r"由 Renesas Electronics 制造的适用于通用工业、车载系统、数字 AV 设备和数字成像设备的 32 位 RISC 微控制器
"m68k"由 Motorola Semiconductor Products Sector 开发的 16 位和 32 位 CISC 微处理器,并由 NXP 进一步改进为 ColdFire 架构
"mcs251"8 位、16 位和 32 位微控制器系列,它是 "mcs51" 系列的下一个二进制兼容的生成
"mcs51"由 Intel 开发的 8 位哈佛架构微控制器系列
"mips"由 MIPS Computer Systems 开发的无交错流水级的 32 位 RISC 微处理器架构
"mips64"由 MIPS Computer Systems 开发的无交错流水级的 64 位 RISC 微处理器架构
"msp430"由 Texas Instruments 制造的 16 位混合信号微控制器系列
"ppc"由 Apple–IBM–Motorola 联盟开发的 32 位 RISC 处理器系列
"ppc64"由 Apple–IBM–Motorola 联盟开发的 64 位 RISC 处理器系列
"r32c"由瑞萨电子制造的具有提高代码效率和处理性能的32位CISC微控制器
"rh850"瑞萨电子制造的32位汽车微控制器系列
"riscv"基于已建立的RISC原则的开放和免费标准指令集架构
"rl78"瑞萨电子制造的具有3级指令流水线和基于16位和8位累加器的寄存器银行CISC架构的微控制器系列
"rx"由瑞萨电子制造的高性能32位CISC微控制器系列
"s390x"IBM开发的64位和32位System/390处理器架构
"sh"由日立开发并由瑞萨电子制造的32位RISC架构处理器系列
"sparc"由太阳微系统和富士通开发的32位RISC架构处理器系列
"sparc64"由太阳微系统和富士通开发的64位RISC架构处理器系列
"stm8"意法半导体制造的8位微控制器系列
"v850"瑞萨电子制造的32位RISC微控制器系列
"x86"由英特尔开发的32位ISA架构处理器系列
"x86_16"由英特尔开发的16位ISA架构处理器系列
"x86_64"由AMD开发的64位ISA架构处理器系列
"xtensa"由Tensilica开发的具有紧凑的16位和24位指令集的32位架构

默认值:未定义


[自Qbs 1.9起] architectures : stringList

产品将构建的架构。

默认值:未定义

此属性自Qbs 1.9引入。


buildVariant : string

当前构建的构建变体的名称。

可能的值是 "debug""release""profiling"。调试构建通常包含调试应用所需的额外调试符号,并且关闭了优化。分析构建通常包含调试符号,并且打开了优化。这对于分析工具或需要在发布构建中保留调试符号时很有用。发布构建是一个没有调试信息且启用优化的构建。

默认值:如果 qbs.configurationName"release" 则为 "release"。否则 "debug"


[自Qbs 1.9起] buildVariants : stringList

将为该产品构建的构建变体。

默认值:未定义

此属性自Qbs 1.9引入。


[只读,自Qbs 1.6起] configurationName : string

当前构建配置的名称。

通过命令行参数 config 设置构建配置。有关更多信息,请参阅 build

默认值:"default"

此属性自Qbs 1.6引入。


debugInformation : bool

是否生成调试信息。

默认值:如果 qbs.buildVariant"debug""profiling" 则为 true。否则 false


enableDebugCode : bool

是否在产品中启用调试功能。不要与生成调试符号或代码优化级别混淆。

当启用时,此属性更改以下内容

  • 向Windows链接器传递一个标志以链接到调试Windows CRT(公共运行时)库(例如 /MTd 而不是 /MT)

当禁用时,此属性更改以下内容

  • 向编译器传递 NDEBUG 定义

通常,此属性在调试构建中启用,在发布或分析构建中禁用。

默认值:调试构建为 true,否则为 false


install : bool

是否要安装某些文件集。

通常,此属性在Group项目中设置,以标记多个文件为可安装。

注意:对于此属性被自动启用的工件,将自动接收到文件标记"installable"。这对于编写与打包相关的规则很有用。

默认值:false


installDir : string

productGroup中的文件的安装目录。

此属性的值是相对于installPrefix的路径。

默认值:未定义


[since Qbs 1.1] installPrefix : string

全局安装前缀。它在installDir的所有值之前自动添加。

此属性的值在安装上下文中相对于installRoot

默认值:Unix上为"/usr/local",否则为""

此属性是在Qbs 1.1中引入的。


[since Qbs 1.4] installRoot : string

全局安装根。它在installPrefix的安装上下文中自动添加。

注意:此属性与installDirinstallPrefix基本不同,因为它不应该对正在构建的代码可见。实际上,安装根通常是用于打包二进制的临时位置,因此不应假定它们在运行时将位于该位置。同样地,此属性通常不会从项目文件中设置。

默认值:<build dir>/install-root

此属性是在Qbs 1.4中引入的。


[since Qbs 1.4] installSourceBase : string

将要安装的本地文件的基目录。源基目录从installDir中指定的目标目录路径中省略。

默认值:要安装的当前文件的目录,相对于产品的源目录。

此属性是在Qbs 1.4中引入的。


optimization : string

所有工具链应执行的一般优化类型。

允许的值有

  • "fast"
  • "none"
  • "small"

默认值:如果qbs.buildVariant"debug",则为"none"。否则为"fast"


[since Qbs 1.9] profiles : stringList

应为产品构建的配置文件。

对于此处列出的每个配置文件,都将根据各自配置文件中设置的属性构建产品的一个实例。

默认值:[project.profile]

此属性自Qbs 1.9引入。


[since Qbs 1.5] shellPath : path

与命令行解释器对应的平台特定文件路径。

在Windows上,这是cmd.exe的路径,该路径保存在COMSPEC环境变量中(通常是C:/Windows/System32/cmd.exe),在Unix-like平台上,这是/bin/sh

默认值:Windows上的"%COMSPEC%",Unix上的"/bin/sh"

此属性是在Qbs 1.5中引入的。


sysroot : string

目标平台的sysroot

通常在配置文件中设置此属性以进行交叉编译。

默认值:未定义


[只读] targetOS : stringList

包含描述用于构建项目的操作系统和操作系统家族的字符串值列表。

此属性基于targetPlatform属性计算得出,通常用于条件语句中测试特定的操作系统或操作系统家族。

Group {
    // Includes all Unix-like platforms, such as: Linux, BSD, Apple platforms and others.
    condition: qbs.targetOS.includes("unix")
    files: ...
}
Group {
    // Includes all Apple platforms, such as macOS, iOS, and iOS Simulator.
    condition: qbs.targetOS.includes("darwin")
    files: ...
}
Group {
    // Includes only macOS
    condition: qbs.targetOS.includes("macos")
    files: ...
}

避免为此目的使用targetPlatform。例如,而不是

qbs.targetPlatform === "macos" || qbs.targetPlatform === "ios" || qbs.targetPlatform === "tvos" || qbs.targetPlatform === "watchos"

使用

qbs.targetOS.includes("darwin")

然而,在某些情况下,使用targetPlatform是可以接受的,例如,当结果条件更简单但仍正确时

qbs.targetPlatform === "linux"

versus

qbs.targetOS.includes("linux") && !qbs.targetOS.includes("android")

有关可能的完整值列表,请参阅targetPlatform和targetOS之间的关系

默认值:未定义


[since 1.11] targetPlatform : string

您想要为构建的操作系统。

此属性通常会设置在配置文件中或为特定产品,其中的目标操作系统始终是已知的(例如,用原生代码编写的Apple Watch应用)。

例如,用于构建iOS仿真平台配置文件的属性设置为ios-simulator值。

profiles.xcode-iphonesimulator.qbs.targetPlatform: "ios-simulator"

通常应将此属性视为只写,避免使用它来测试当前目标操作系统。相反,应使用targetOS属性来进行条件测试。

targetPlatform和targetOS之间的关系

此表描述了可能的值以及targetPlatformtargetOS属性之间的匹配关系。

目标平台目标操作系统
"aix"["aix", "unix"]
"android"["android", "linux", "unix"]
"dos"["dos"]
"freebsd"["freebsd", "bsd", "unix"]
"haiku"["haiku"]
"hpux"["hpux", "unix"]
"hurd"["hurd", "unix"]
"integrity"["integrity", "unix"]
"ios"["ios", "darwin", "bsd", "unix"]
"ios-simulator"["ios-simulator", "ios", "darwin", "bsd", "unix"]
"linux"["linux", "unix"]
"lynx"["lynx"]
"macos"["macos", "darwin", "bsd", "unix"]
"netbsd"["netbsd", "bsd", "unix"]
"openbsd"["openbsd", "bsd", "unix"]
"os2"["os2"]
"qnx"["qnx", "unix"]
"solaris"["solaris", "unix"]
"tvos"["tvos", "darwin", "bsd", "unix"]
"tvos-simulator"["tvos-simulator", "tvos", "darwin", "bsd", "unix"]
"unix"["unix"]
"vxworks"["vxworks"]
"watchos"["watchos", "darwin", "bsd", "unix"]
"watchos-simulator"["watchos-simulator", "watchos", "darwin", "bsd", "unix"]
"windows"["windows"]
"none"["none"]
未定义[]

注意:"none"值通常用于裸机平台。

默认值:Host.platform()

此属性是在Qt 1.11中引入的。

另请参阅:目标平台


toolchain : stringList

包含描述用于构建项目的工具链和工具链家族的字符串值列表。

此属性从toolchainType属性推导而来,并通常用于条件语句中测试特定的工具链或工具链家族。

Properties {
    // flags for GCC
    condition: qbs.toolchain.includes("gcc")
    cpp.commonCompilerFlags: ...
}
Properties {
    // flags for MSVC
    condition: qbs.toolchain.includes("msvc")
    cpp.commonCompilerFlags: ...
}

toolchainType不同,它包含单个值,qbs.toolchain是一个包含工具链家族的字符串列表。这使得条件和检查更加简单。例如,而不是

(qbs.toolchainType === "xcode" || qbs.toolchainType === "clang" || qbs.toolchainType === "gcc")

使用

qbs.toolchain.includes("gcc")

由于XCode、GCC和Clang属于"gcc"家族。

toolchainType和toolchain之间的关联

此表描述了toolchainType属性和toolchain属性之间的可能值和匹配关系

工具链类型工具链
"clang"["clang", "llvm", "gcc"]
"clang-cl"["clang-cl", "msvc"]
"cosmic"["cosmic"]
"dmc"["dmc"]
"gcc"["gcc"]
"iar"["iar"]
"keil"["keil"]
"llvm"["llvm", "gcc"]
"mingw"["mingw", "gcc"]
"msvc"["msvc"]
"qcc"["qcc"]
"sdcc"["sdcc"]
"watcom"["watcom"]
"xcode"["xcode", "clang", "llvm", "gcc"]

默认值:未定义


[自Qbs 1.11起]toolchainType : string

此构建将要使用的工具链。

例如,要使用"clang"工具链构建项目,只需这样做

qbs build qbs.toolchainType:clang

通常应将此属性视为写入-only,并避免使用它来测试当前工具链。相反,请使用toolchain属性进行条件测试。

典型值包括:"gcc""clang""clang-cl""mingw""msvc""xcode"。另请参阅Relation between toolchainType and toolchain

默认情况下,qbs.toolchainType将根据targetOS属性自动检测

目标操作系统工具链
"darwin""xcode"
"freebsd""clang"
"haiku""gcc"
"qnx""qcc"
"unix""gcc"
"vxworks""gcc"
"windows""msvc"

默认值:自动检测

此属性是在Qbs 1.11中引入的。


[只读,自Qbs 1.4.1起]version : string

作为字符串的Qbs版本号。例如:"1.4.1"

此属性是在Qbs 1.4.1中引入的。


[只读,自Qbs 1.4.1起]versionMajor : int

Qbs的主版本号。

此属性是在Qbs 1.4.1中引入的。


[只读,自Qbs 1.4.1起]versionMinor : int

Qbs的次要版本号。

此属性是在Qbs 1.4.1中引入的。


[只读,自Qbs 1.4.1起]versionPatch : int

Qbs的修补程序版本号。

此属性是在Qbs 1.4.1中引入的。


版权所有©2023 The Qt Company Ltd. 本文档的贡献包括各自权利人的版权。提供的文档遵守由自由软件基金会发布的GNU自由文档许可版1.3的条款。Qt及其相关标识是芬兰以及世界其他国家的The Qt Company Ltd的商标。所有其他商标均为其各自权利人的财产。