cpp

提供 C/C++ 支持。更多...

Qbs 1.0

属性

详细描述

cpp 模块包含了 C/C++族工具链的属性和规则。在苹果平台上,这包括了Objective-C/C++的支持。

设置运行环境

当运行依赖于动态库的应用程序时,Module.setupRunEnvironment 指定的脚本会自动将库的位置添加到环境中。具体来说,在Windows上为 PATH,在macOS上为 DYLD_LIBRARY_PATH,在Linux和其他Unix平台上为 LD_LIBRARY_PATH。如果 "ignore-lib-dependencies" 的值出现在 config 数组中,则此行为将被禁用。用户可以通过 run 命令来设置此值。

依赖参数

参数类型默认值描述
linkbool1.9undefined如果 false,即使它是链接规则的有效输入,也不会链接依赖项。此属性仅影响库依赖项。
linkWholeArchivebool1.9undefined如果 true,则如果依赖项是静态库,则即使它们的符号似乎没有被使用,也会将其所有对象都拉入目标二进制文件。此参数在从静态库创建动态库时非常有用。
symbolLinkModestring1.9undefined指定库或框架如何链接的属性。可能包含的值有:"weak"、"lazy"、"reexport" 和 "upward";有关完整详情,请参阅 Apple ld64 man 页面。undefined 使用常规链接。目前仅适用于为 Apple 平台进行链接。

相关文件标签

标签自动标记的文件名描述
"application"n/a1.0.1创建可执行文件(通常是通过链接器)的规则将其附加到输出工件。
"asm"*.s(对于 GCC 类型的工具链),*.asm(对于 MSVC)1.1.0具有此标记的源文件作为使用工具链汇编器的规则的输入。为每个此类文件生成一个目标文件。
"asm_cpp"*.S*.sx1.1.0类似于 "asm",但对于需要预处理的源文件。此标签仅对 GCC 类型的工具链有影响。
"c"*.c(如果未启用 combineCSources1.0.1具有此标记的源文件作为使用工具链 C 编译器的规则的输入。为每个此类文件生成一个目标文件。
"c.combine"*.c(如果启用 combineCSources1.8具有此标记的源文件作为将它们组合成一个 C 文件并编译的组合规则的输入。
"cpp"*.C*.cpp*.cxx*.c++*.cc(如果未启用 combineCxxSources1.0.1具有此标记的源文件作为使用工具链 C++ 编译器的规则的输入。为每个此类文件生成一个目标文件。
"cpp.combine"*.C*.cpp*.cxx*.c++*.cc(如果启用 combineCxxSources1.8具有此标记的源文件作为将它们组合成一个 C++ 文件并编译的组合规则的输入。
"c_pch_src""cpp_pch_src""objc_pch_src""objcpp_pch_src"-1.5具有此标记的文件将分别转换为 C、C++、Objective-C 和 Objective-C++ 的预编译头文件。每个产品和学习语言只能有一个此类文件。
"def"-1.17.0此标签用于将模块定义文件(.def)传递给连接器。此类文件为连接器提供有关导出、属性和程序链接信息。此标签仅在MSVC工具链中有效。
"dynamiclibrary"n/a1.0.1创建动态库的规则(通常通过连接器)将其附加到其输出工件。
"dynamiclibrary_import"n/a1.0.0此标签用于动态库的导入库。例如,MSVC连接器规则除了创建dynamiclibrary工件foo.dll外,还会创建dynamiclibrary_import工件foo.lib
"hpp"*.h*.H*.hpp*.hxx*.h++1.0.1此标签用于头文件(C、C++、Objective-C和Objective-C++)。本模块中没有规则直接从这类文件生成输出工件,但编译器规则将依赖于创建此类文件的规则。
"linkerscript"-1.5.0此标签用于ld连接器脚本。如果需要替换默认的连接器脚本,可以提供此类文件。此标签仅在GCC类似工具链中有效。连接器需要支持ld
"obj"n/a1.0.1创建对象文件的规则(通常通过编译器)将其附加到其输出工件。这些文件通常是构建过程中的中间工件,很少需要在项目文件中进行引用。
"objc"*.m(如果未启用combineObjcSources1.1.0带有此标签的源文件作为调用工具链Objective-C编译器的规则的输入。对于每个此类文件,生成一个对象文件。
"objc.combine"*.m(如果启用combineObjcSources1.8带有此标签的源文件作为将它们组合成一个Objective-C文件的规则的输入,然后进行编译。
"objcpp"*.mm(如果未启用combineObjcxxSources1.1.0带有此标签的源文件作为调用工具链Objective-C++编译器的规则的输入。对于每个此类文件,生成一个对象文件。
"objcpp.combine"*.mm(如果启用combineObjcxxSources1.8带有此标签的源文件作为将它们组合成一个Objective-C++文件的规则的输入,然后进行编译。
"rc"*.rc1.1.0带有此标签的文件作为Windows资源编译器的输入。每个此类文件生成一个对象文件。此标签仅对Windows以外的目标平台无效。
"staticlibrary"n/a1.0.1创建静态库的规则(通常通过连接器)将其附加到其输出工件。
"versionscript"-1.5.0此标签用于ld连接器脚本。如果需要精细控制共享库中存在的符号,可以提供此类文件。此标签仅在GCC类似工具链中有效。连接器需要支持ld

相关作业池

描述
"assembler"1.13用于执行工具链汇编器的规则的作业池。这只适用于直接调用汇编器二进制文件,而不是通过编译器间接调用。
"compiler"1.13用于执行编译器的规则的作业池。所有语言版本使用同一池。
"linker"1.13用于执行连接器的规则的作业池。

属性文档

[since Qbs 1.2] allowUnresolvedSymbols : bool

如果要将链接步骤设置为在生成的二进制程序包含未解决的符号时也能成功,请设置为true。通常,这样做没有意义,但在某些特殊情况下,即使符号在链接时不存在,它们也可能在加载时可用。

默认值:未定义

该属性是在Qbs 1.2中引入的。


[自Qbs 1.9起]alwaysUseLipo : 布尔型

在苹果平台上组合Mach-O输出文件时是否始终使用lipo,即使只有一个CPU架构也是如此。通常不需要更改此值。

默认值:false

该属性是在Qbs 1.9中引入的。


architecture : 字符串

目标架构。

默认值:qbs.architecture


archiverName : 字符串

该属性特定于Unix平台。

归档器二进制文件名。此属性在构建配置文件中设置。

默认值:"ar"


archiverPath : 字符串

该属性特定于Unix平台。

归档器二进制文件的完整路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。


[自Qbs 1.5起]assemblerFlags : 字符串列表

汇编器的附加标志列表。

默认值:未定义

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


assemblerListingSuffix : 字符串

要附加到生成的汇编列表文件的字符串。

默认值:与toolchain相关,典型值是".lst"


[自Qbs 1.5起]assemblerName : 字符串

汇编器二进制文件名。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

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


[自Qbs 1.5起]assemblerPath : 字符串

汇编器二进制文件的完整路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

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


[自Qbs 1.4起]automaticReferenceCounting : 布尔型

该属性特定于苹果平台。

是否为Objective-C和Objective-C++源代码启用自动引用计数(ARC)。

如果未定义,则使用编译器的默认值(可能是false)。

默认值:未定义

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


cFlags : 字符串列表

C编译器的附加标志列表。

默认值:未定义


[自Qbs 1.4起]cLanguageVersion : 字符串列表

必须遵守的C标准的版本。

设置此属性将根据工具链添加相应的编译器和链接器标志。

如果留空未定义,则使用编译器的默认值。如果列表中包含多个值,则选择最高的版本。

可能的值包括:"c89""c99""c11""c17""c2x"

默认值:未定义

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


[自Qbs 1.8起]combineCSources : 布尔型

产品上启用此属性会指示文件标记器将标记"c.combine"附加到C源,而不是"c"。结果,产品的所有C源都将合并成一个文件,然后进行编译。

这可以显著加快初始编译,但在增量构建的上下文中可能会产生负面影响。此外,由于翻译单元的合并,可能无法编译完全合法的代码。

要在不能合并源的产品中启用此属性,请将源放入一个专门的中,并将它们的fileTags属性设置为"c",以覆盖文件标记器。

注意:在特定源文件上设置的模块属性(即在组级别)在构建组合文件时不会被考虑。您需要在产品级别设置这些属性或通过上述机制阻止相应文件被组合。

默认值:false

此属性自 Qbs 1.8 以来引入。


[自 Qbs 1.8] combineCxxSources : bool

combineCSources 类似,但用于 C++。相关文件标签是 "cpp""cpp.combine"

默认值:false

此属性自 Qbs 1.8 以来引入。

另请参阅:combineCSources.


[自 Qbs 1.8] combineObjcSources : bool

combineCSources 类似,但用于 Objective-C。相关文件标签是 "objc""objc.combine"

默认值:false

此属性自 Qbs 1.8 以来引入。

另请参阅:combineCSources.


[自 Qbs 1.8] combineObjcxxSources : bool

combineCSources 类似,但用于 Objective-C++。相关文件标签是 "objcpp""objcpp.combine"

默认值:false

此属性自 Qbs 1.8 以来引入。

另请参阅:combineCSources.


[自 Qbs 1.0.1] commonCompilerFlags : stringList

一个标志列表,这些标志被添加到所有编译命令中,独立于语言。

默认值:未定义

此属性自 Qbs 1.0.1 以来引入。


[自 Qbs 1.10] compilerDefinesByLanguage : var

一个将从当前工具链的所有项目中使用的前处理宏列表映射到语言标签的字符串到字符串到字符串映射。

通常,用户项目文件不会设置此属性。

注意:不设置 enableCompilerDefinesByLanguage,则该属性不可用。

默认值:未定义

此属性自 Qbs 1.10 以来引入。


[自 Qbs 1.6] compilerFrameworkPaths : pathList

用于当前工具链的所有项目的框架搜索路径列表。

通常,用户项目文件不会设置此属性。

默认值:由编译器自动探测决定。

此属性自 Qbs 1.6 以来引入。


[自 Qbs 1.6] compilerIncludePaths : pathList

用于当前工具链的所有项目的 #include 搜索路径列表。

通常,用户项目文件不会设置此属性。

默认值:由编译器自动探测决定。

此属性自 Qbs 1.6 以来引入。


[自 Qbs 1.6] compilerLibraryPaths : pathList

用于当前工具链的所有项目的库搜索路径列表。

通常,用户项目文件不会设置此属性。

默认值:由编译器自动探测决定。

此属性自 Qbs 1.6 以来引入。


compilerListingSuffix : string

要追加到生成的编译器列出文件的字符串。

默认值:与toolchain相关,典型值是".lst"


compilerName : string

主编译器二进制文件名。此属性在构建轮廓中设置。

默认值:由qbs setup-toolchains决定。


compilerPath : string

主编译器二进制文件的全路径。此属性在构建轮廓中设置。

如果工具链为不同的语言提供不同的编译器,则使用 compilerPathByLanguage

默认值:由qbs setup-toolchains决定。


[自 Qbs 1.3] compilerPathByLanguage : var

将文件标签映射到编译器二进制文件全路径的字符串到字符串映射。此属性在构建轮廓中设置。

默认值:由qbs setup-toolchains决定。

此属性自 Qbs 1.3 以来引入。


compilerVersion : string

编译器版本字符串,由主版本号、次版本号和补丁版本号组成,用句点分隔。

默认值:未定义


[自Qbs 1.4起] compilerVersionMajor : int

编译器的主版本号。

默认值:未定义

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


[自Qbs 1.4起] compilerVersionMinor : int

编译器的次版本号。

默认值:未定义

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


[自Qbs 1.4起] compilerVersionPatch : int

编译器版本的补丁级别组件。

默认值:未定义

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


[自Qbs 1.1起] compilerWrapper : stringList

用于包装编译器调用的包装二进制文件及其参数。这对于像ccache这样的编译器包装器很有用。

默认值:未定义

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


cppFlags : stringList

C预处理器的一些额外标志的列表。

默认值:未定义


该属性特定于Unix平台。

在构建动态库时,是否创建版本别名符号链接。

默认值: true


cxxFlags : stringList

C++编译器的一些额外标志的列表。

默认值:未定义


[自Qbs 1.4起] cxxLanguageVersion : stringList

代码必须遵守的C++标准的版本。

设置此属性将根据工具链添加相应的编译器和链接器标志。

如果留空未定义,则使用编译器的默认值。如果列表中包含多个值,则选择最高的版本。

可能值包括:"c++98""c++11""c++14""c++17""c++20""c++23"

默认值:未定义

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


[自Qbs 1.4起] cxxStandardLibrary : string

要链接的C++标准库。

如果设置此属性,将添加对应的编译器和链接器标志,假设该值对当前工具链有效。

如果值保持未定义,将使用编译器默认值。

可能值包括:"libstdc++""libc++"

默认值:未定义

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


debugInfoBundleSuffix : string

该属性特定于苹果平台。

要附加到调试信息包名称的字符串。

默认值: ".dSYM"


debugInfoSuffix : string

要附加到调试信息文件名称的字符串。

默认值:取决于toolchain,典型的值是".debug"".pdb"".dwarf"


debugInformation : bool

是否生成调试信息。

默认值:qbs.debugInformation


defines : stringList

传递给编译器的预处理器宏的列表。

要设置宏值,使用以下语法:

cpp.defines: ["USE_COLORS=1", 'COLOR_STR="blanched almond"']

默认值:未定义


[自Qbs 1.10起] discardUnusedData : bool

如果此属性为true,链接器将丢弃它确定未使用的对象的数据。在MSVC和Apple平台上,粒度为符号,在其他地方为段。

默认值:未定义

此属性自 Qbs 1.10 以来引入。


[自Qbs 1.8起] distributionFrameworkPaths : pathList

一组针对特定分发版的框架搜索路径,优先级低于systemFrameworkPaths

供实现对新操作系统或分发版支持的模块作者使用。

用户项目文件不应设置此属性。

默认值:未定义

此属性自 Qbs 1.8 以来引入。


[自Qbs 1.8起] distributionIncludePaths : pathList

一组针对特定分发版的包含路径,作为系统包含路径传递给编译器,优先级低于systemIncludePaths

供实现对新操作系统或分发版支持的模块作者使用。

用户项目文件不应设置此属性。

默认值:未定义

此属性自 Qbs 1.8 以来引入。


[自Qbs 1.8起] distributionLibraryPaths : pathList

一组针对特定分发版的库搜索路径。

供实现对新操作系统或分发版支持的模块作者使用。

用户项目文件不应设置此属性。

默认值:未定义

此属性自 Qbs 1.8 以来引入。


[自Qbs 1.6起]driverFlags : stringList

由编译器驱动程序对所有编译和链接命令添加的标志列表,与语言无关。

默认值:未定义

此属性自 Qbs 1.6 以来引入。


[自Qbs 1.11起]driverLinkerFlags : stringList

由编译器驱动程序对所有链接命令添加的标志列表,与语言无关。

默认值:未定义

该属性自Qbs 1.11开始引入。


[自Qbs 1.4.1起]dsymutilFlags : stringList

该属性特定于苹果平台。

dsymutil工具提供的附加标志。

注意:如果此属性包含-f--flat选项,在将separateDebugInformation设置为true时,Qbs将生成“平面”(单文件)的.dwarf调试符号文件,而不是.dSYM包(目录)。

默认值:未定义

该属性自Qbs 1.4.1开始引入。


[自Qbs 1.4起]dsymutilPath : string

该属性特定于苹果平台。

dsymutil二进制文件的完整路径。该属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

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


dynamicLibraries : stringList

要链接的动态库列表。

如果库是您的项目的一部分,考虑使用Depends项。

每种库可以指定为以下两种方式之一

  • 绝对文件路径(例如,"/foo/bar.lib"),在这种情况下,它将被直接传递给链接器,忽略libraryPaths
  • 库基本名(例如,"bar"),在这种情况下,必须通过libraryPaths提供包含库的目录。

不允许使用相对路径("foo/bar.lib")。

默认值:未定义

另请参阅 libraryPaths如何为第三方库创建模块?


dynamicLibraryImportSuffix : string

此属性仅适用于Windows。

要添加到动态库导入文件name的字符串。

默认值:".lib"


dynamicLibraryPrefix : string

要添加到动态库文件name前的字符串。

默认值:依赖于toolchain,典型值是"""lib"


dynamicLibrarySuffix : string

要添加到动态库文件name后的字符串。

默认值:依赖于toolchain,典型值是".so"".dll""dylib"


[自Qbs 1.10起]enableCompilerDefinesByLanguage : stringList

要提取默认编译器定义的语言列表(一个或多个为"c""cpp""objc""objcpp")。

因为这对性能有影响,默认不开启任何语言。

默认值:未定义

此属性自 Qbs 1.10 以来引入。


[自Qbs 1.20起]enableCxxLanguageMacro : string

是否设置/Zc:__cplusplus宏(https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus

此属性仅适用于MSVC工具链。clang-cl也支持此选项,但没有效果。

此属性仅适用于Windows。默认:MSVC为true,clang-cl为false

该属性自Qbs 1.20版本引入。


[自Qbs 1.5起]enableExceptions : bool

是否在C++代码中启用异常。

默认值: true

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


[自Qbs 1.5起]enableReproducibleBuilds : bool

是否让编译器尝试生成可重复构建的对象文件。

一些编译器(尤其是GCC)使用随机数来生成必须在每个编译单元中不同的符号名称。通过将此属性设置为true可以避免这种情况。

默认值:false

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


[自Qbs 1.5起]enableRtti : bool

是否在C++代码中启用运行时类型信息。

默认值:未定义

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


[自Qbs 1.8起]enableSuspiciousLinkerFlagWarnings : bool

是否打印有关转义链接标志(如-Xlinker-Wl)的警告。

默认值: true

此属性自 Qbs 1.8 以来引入。


[自Qbs 1.9起]endianness : string

指定目标平台处理器体系结构的端序("big"或"little")。

值将自动从编译器的默认值中检测到,但也可以手动设置,以便在选择如MIPS和PowerPC这样的双字节序架构时选择特定的端序。

默认值:编译器默认值。

该属性是在Qbs 1.9中引入的。


[自Qbs 1.3起]entryPoint : string

可执行文件或动态库的入口点名称。

如果此属性未定义,则使用工具链的默认值。

默认值:未定义

此属性自 Qbs 1.3 以来引入。


[自Qbs 1.5起]exceptionHandlingModel : string

使用异常处理模型。

对于MSVC,可以是"default""seh""externc"。对于所有其他编译器,"default"表示默认或唯一异常处理模型。

默认值:"default"

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


executablePrefix : string

字符串,用于在可执行文件name之前添加。

默认值:""


executableSuffix : string

字符串,用于将可执行文件name之后附加。

默认值:由toolchain相关,典型的值是""".exe"


[自Qbs 1.4.1起]exportedSymbolsCheckMode : string

该属性特定于Unix平台。

控制Qbs如何确定更新的动态库是否导致相关联的动态库重新链接。

默认值是"ignore-undefined",这意味着添加或删除的未定义符号不会引发任何重新链接。如果确实发生了这种情况,例如,因为相关联的产品是用如"--no-undefined"之类的选项链接的,则可以将此属性设置为"strict"

默认值:"ignore-undefined"

该属性自Qbs 1.4.1开始引入。


frameworkPaths : pathList

该属性特定于苹果平台。

框架搜索路径的列表。

相对路径被认为是相对于它们使用的.qbs产品文件而言的。

默认值:未定义


frameworks : stringList

该属性特定于苹果平台。

要链接的框架的列表。

如果框架是您项目的一部分,请考虑使用Depends项。

默认值:未定义


[自Qbs 1.15起]generateAssemblerListingFiles : bool

此属性仅适用于裸机平台。

是否自动生成汇编列表文件。

默认值:false

该属性自Qbs 1.15版本引入。


[自 Qbs 1.15 开始] generateCompilerListingFiles : bool

是否自动生成编译器列表文件。

默认值:false

该属性自Qbs 1.15版本引入。


[自 Qbs 1.13 开始] generateLinkerMapFile : bool

是否自动生成链接器映射文件。

默认值:false

此属性从 Qbs 1.13 版本引入。


[自 Qbs 1.5.0 开始] generateManifestFile : bool

此属性仅适用于Windows。

是否自动生成清单文件并将其包含在二进制文件中。

如果您提供了自己的 rc 文件,请将该属性设置为 false

默认值: true

此属性从 Qbs 1.5.0 版本引入。


includePaths : pathList

包含路径的列表。

相对路径被认为是相对于它们使用的.qbs产品文件而言的。

默认值:未定义


libraryPaths : pathList

库搜索路径列表。

这些路径将以适当的方式传递给链接器。例如,当使用类似 ld 的链接器时,会使用 -L 参数。

相对路径被认为是相对于它们使用的.qbs产品文件而言的。

默认值:未定义

另请参阅 动态库如何为第三方库创建模块?


linkerFlags : stringList

链接器额外的标志列表。

这些标志不应使用 -Wl-Xlinker 语法进行转义,因为 Qbs 会根据所使用的链接器自动进行转义。

默认值:未定义

另请参阅 链接模式


linkerMapSuffix : string

追加到生成的链接器内存映射文件的字符串。

默认值:工具链 相关,典型值为 ".map"


[自 Qbs 1.6 开始] linkerMode : string

控制是否在链接二进制文件时自动使用适当的编译器前端而不是系统链接器。

默认值为 "automatic",根据链接命令行上对象文件的类型选择 C++ 编译器、C 编译器或由 链接器名称链接器路径 属性指定的系统链接器。

将此属性设置为 "manual" 以显式使用 链接器名称链接器路径 属性指定链接器。

默认值:"automatic"

此属性自 Qbs 1.6 以来引入。


[自 Qbs 1.1.1 开始] linkerName : string

链接器二进制文件名称。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

此属性从 Qbs 1.1.1 版本引入。


[自 Qbs 1.1.1 开始] linkerPath : string

链接器二进制文件的全路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

此属性从 Qbs 1.1.1 版本引入。


[自 Qbs 1.13 开始] linkerVariant : string

设置此属性可以强迫使用特定的链接器。非空值会在使用 gccclangclang-cl 链接时发出 -fuse-ld 选项。其他工具链不支持此属性。

clanggcc 的可能值是 "bfd""gold""lld""mold"clang-cl 的可能值是 "link""lld"

以下示例演示了如何为不同的工具链更改链接器

Properties {
    condition: qbs.toolchain.includes("gcc")
    cpp.linkerVariant: "gold"
}
Properties {
    condition: qbs.toolchain.includes("clang-cl")
    cpp.linkerVariant: "lld"
}

默认值:未定义

此属性从 Qbs 1.13 版本引入。


[自 Qbs 1.6.2 开始] linkerWrapper : stringList

包装链接器调用的包装器二进制文件及其参数。这对于需要 Bullseye Coverage 等链接器包装器时非常有用。

默认值:未定义

此属性在Qbs 1.6.2版本中引入。


[自Qbs 1.9以来] lipoPath : 字符串

该属性特定于苹果平台。

lipo的二进制文件的完整路径。

默认值:自动确定。

该属性是在Qbs 1.9中引入的。


loadableModulePrefix : 字符串

该属性特定于苹果平台。

用于在Darwin可加载模块文件名称前缀的字符串。

默认值:""


loadableModuleSuffix : 字符串

该属性特定于苹果平台。

用于在Darwin可加载模块文件名称后缀的字符串。

默认值:".bundle"


minimumIosVersion : 字符串

该属性特定于苹果平台。

格式为[主版号].[次版号]的版本号,指示产品应运行的最小iOS版本。

-miphoneos-version-min=<版本>传递到编译器。

如果设置为未定义,将使用编译器默认值。

注意:由于最近XCode安装中早期iOS版本已损坏,Qbs将armv7a的最小版本设置为"6.0"

默认值:针对armv7a"6.0",否则为未定义


[自Qbs 1.5.2以来] minimumMacosVersion : 字符串

该属性特定于苹果平台。

格式为[主版号].[次版号]的版本号,指示产品应运行的最小macOS版本。

-mmacosx-version-min=<版本>传递到编译器。

如果保留为未定义,则将使用编译器默认值。

默认值:未定义

此属性在Qbs 1.5.2版本中引入。


[自Qbs 1.5以来] minimumTvosVersion : 字符串

该属性特定于苹果平台。

格式为[主版号].[次版号]的版本号,指示产品应运行的最小Apple tvOS版本。

如果保留为未定义,则将使用编译器默认值。

注意:由于默认情况下最近XCode安装不支持早期tvOS版本,Qbs将最小版本设置为"6.0"

默认值:"6.0"

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


minimumWatchosVersion : 字符串

该属性特定于苹果平台。

格式为[主版号].[次版号]的版本号,指示产品应运行的最小Apple watchOS版本。

如果保留为未定义,则将使用编译器默认值。

默认值:未定义


minimumWindowsVersion : 字符串

此属性仅适用于Windows。

格式为[主版号].[次版号]的版本号,指示产品应运行的最小Windows版本。

定义WINVER_WIN32_WINNT_WIN32_WINDOWS,并将版本号应用于链接器标志/SUBSYSTEM/OSVERSION(对于MSVC)或--major-subsystem-version--minor-subsystem-version--major-os-version,和--minor-os-version(对于MinGW)。

如果保留为未定义,则将使用编译器默认值。

默认值:未定义


[自Qbs 1.2以来] nmName : 字符串

该属性特定于Unix平台。

nm的二进制文件名称。此属性在构建配置文件中设置。

默认值:"nm"

该属性是在Qbs 1.2中引入的。


[自Qbs 1.2以来] nmPath : 字符串

该属性特定于Unix平台。

nm的二进制文件的完整路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

该属性是在Qbs 1.2中引入的。


objcFlags : 字符串列表

Objective-C编译器的附加标志列表。

默认值:未定义


[自Qbs 1.4以来] objcopyName : 字符串

该属性特定于Unix平台。

objcopy的二进制文件名称。此属性在构建配置文件中设置。

默认值:"objcopy"

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


[自Qbs 1.4以来] objcopyPath : 字符串

该属性特定于Unix平台。

objcopy的二进制文件的完整路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

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


objcxxFlags : 字符串列表

Objective-C++编译器的附加标志列表。

默认值:未定义


objectSuffix : 字符串

要附加到生成的目标文件的字符串。

默认值:依赖构建链,典型值是".o"".obj"


优化 : 字符串

优化等级。

默认:qbs.optimization


平台定义 : 字符串列表

在为当前目标平台构建的所有项目中使用的预处理器宏的列表。用户项目文件通常不设置此属性。

默认值:未定义


生成位置无关代码 : 布尔值

该属性特定于Unix平台。

是否生成位置无关代码。

如果此属性未定义,则库生成位置无关代码,但应用到应用程序上则不生成。

默认值:未定义


[自 Qbs 1.0.1] 前缀头文件 : 路径列表

产品中自动包含在每个源文件开始的文件列表。

默认值:未定义

此属性自 Qbs 1.0.1 以来引入。


[自 Qbs 1.16] 移除重复库 : 布尔值

是否在传递给链接器之前将对象和库的列表减少到唯一值列表。

默认值: true

此属性自 Qbs 1.16 介绍。


[自 Qbs 1.10] 要求AppContainer环境 : 布尔值

此属性仅适用于Windows。

生成的可执行文件或动态链接库是否需要AppContainer执行环境。当创建通用Windows平台应用程序时设置为true

默认值:未定义

此属性自 Qbs 1.10 以来引入。


[自 Qbs 1.4] 要求AppExtension安全API : 布尔值

该属性特定于苹果平台。

是否在Apple平台上强制使用仅限app-extension-safe APIs。这对于在OS X Yosemite和iOS 8及以上版本中构建应用程序扩展是必要的。

如果未定义,则使用编译器和链接器的默认值(可能是false)。

默认值:未定义

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


[自 Qbs 1.9] rpath链接标记 : 字符串

链接器使用的rpath链接标记。

默认值:依赖构建链,典型值是"-rpath-link=""-L"

该属性是在Qbs 1.9中引入的。


[自 Qbs 1.11] rpath起源 : 字符串

该属性特定于Unix平台。

在rpath字符串中用作占位符值,用于引用包含引用可执行文件或共享库的目录。

默认:在基于Mach-O的平台(macOS、iOS、tvOS、watchOS)上为"@loader_path";在基于ELF的平台(Linux和大多数其他类Unix平台)上为"$ORIGIN"

该属性自Qbs 1.11开始引入。


rpaths : 字符串列表

该属性特定于Unix平台。

传递给链接器的rpath列表。同时出现在systemRunPaths中的路径将被忽略。

默认值:未定义

另请参阅如何使用rpaths?


[自 Qbs 1.3.3] 运行时库 : 字符串

所使用的运行时库的类型。

接受的值是"静态""动态"

如果此属性设置为未定义,则使用工具链的默认运行时库。

注意:此属性仅适用于MSVC和MinGW。

默认:MSVC和MinGW为"动态",其他编译器为未定义

此属性自 Qbs 1.3.3 介绍。


[自 Qbs 1.4] 分离调试信息 : 布尔值

是否将调试信息存储在外部文件或包中,而不是在二进制文件中。

当此属性设置为true时,生成的文件类型取决于编译器和目标平台。

  • 在MSVC中,此属性控制生成.pdb(程序调试数据库)文件。
  • 在搭载GCC或Clang的Apple平台上,此属性控制生成.dSYM(DWARF符号)包,或者如果dsymutilFlags中包含-f--flat标志,则生成.dwarf符号文件。
  • 在其他搭载GCC或Clang的平台(包括Windows/MinGW)上,此属性控制生成.debug符号文件。

默认:在MSVC和搭载GCC或Clang的Apple平台上为true,否则为false

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

另请参阅debugInformation如何分离和安装调试符号?


[自Qbs 1.7起]soVersionstring

该属性特定于Unix平台。

附加到ELF共享库中的soame版本号。

默认:如果设置了版本,则为product.version的主版本号,否则为[]

此属性自Qbs 1.7引入。


[自Qbs 1.5起]sonamePrefixstring

该属性特定于Unix平台。

库名称或完整库路径。

如果已定义,则此属性的值用作构建共享库的SONAME标识符的前缀。SONAME标识符(在Apple平台上为LC_ID_DYLIB,在其他Unix-like平台上为DT_SONAME)是动态链接器稍后用来引用库的标识符。

在Apple平台上,路径可能包含以下占位符:

  • @rpath - 展开为当前进程可执行文件或引用库中定义的LC_RPATH Mach-O命令的路径。
  • @executable_path - 展开为当前进程可执行文件的位置。
  • @loader_path - 展开为引用的可执行文件或库的位置。

在大多数情况下,使用@rpath是足够并且推荐的。但是,前缀也可以使用不同的占位符或绝对路径来指定。

有关更多信息,请参阅动态库安装名称的DYLD文档

默认值:未定义

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

另请参阅如何使用rpaths?


staticLibrariesstringList

要链接的静态库列表。

如果库是您的项目的一部分,考虑使用Depends项。

默认值:未定义


staticLibraryPrefixstring

用于静态库文件name的前缀。

默认值:依赖于toolchain,典型值是"""lib"


staticLibrarySuffixstring

字符串,用于将可执行文件name之后附加。

默认:依赖于toolchain,典型值为".a"".lib"


[自Qbs 1.4起]stripNamestring

该属性特定于Unix平台。

strip二进制的名称。此属性在构建配置文件中设置。

默认:"strip"

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


[自Qbs 1.4起]stripPathstring

该属性特定于Unix平台。

strip二进制的完整路径。此属性在构建配置文件中设置。

默认值:由qbs setup-toolchains决定。

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


systemFrameworkPathspathList

该属性特定于苹果平台。

框架搜索路径的列表。

相对路径被认为是相对于它们所使用的targetName属性的产品文件。那些路径中的框架中的头文件不会产生警告。

默认值:未定义


systemIncludePathspathList

传递给编译器作为系统包含路径的包含路径列表。

对于那些路径中的头文件,将忽略警告。

相对路径被认为是相对于它们使用的.qbs产品文件而言的。

默认值:未定义


[自 Qbs 1.6] systemRunPaths : stringList

动态链接器在进程启动时用于定位动态库的路径。

默认值:在 Linux 的主机构建中通过 ldconfig 自动检测,否则在 Unix 中为 ["/lib", "/usr/lib"],在 Windows 中为 []

此属性自 Qbs 1.6 以来引入。


toolchainInstallPath : string

工具链安装的目录路径。此属性在构建配置文件中设置。

这通常是所有编译器和工具路径自动导出的基本属性。

默认值:由qbs setup-toolchains决定。


[自 Qbs 1.8] treatSystemHeadersAsDependencies : bool

确定通过 systemIncludePathsdistributionIncludePathscompilerIncludePaths 找到的包含的头文件是否将被添加到相应目标文件的反向依赖项中。

这意味着修改这些头文件(或其中包含的头文件)将导致重新编译。

默认值:false

此属性自 Qbs 1.8 以来引入。


treatWarningsAsErrors : bool

确定警告是否会被当作错误处理并导致构建失败。

默认值:false


[自 Qbs 1.5] useCPrecompiledHeader : bool

如果存在预编译的头文件,则使用预编译头文件编译 C 源文件。

在一个 Group 项目中将此属性设置为 false 以禁用某些源文件中的预编译头文件,即使产品中存在预编译头文件。

请参阅相关文件标签 Relevant File Tags

默认值: true

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


[自 Qbs 1.5] useCxxPrecompiledHeader : bool

useCPrecompiledHeader 类似,但用于 C++。

默认值: true

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


[自 Qbs 1.11] useLanguageVersionFallback : bool

在编译器命令行调用中是否显式使用语言标准版本回退值。

默认情况下,Qbs 会自动将 cLanguageVersioncxxLanguageVersion 属性指定的 C 和 C++ 语言标准版本替换为回退值,这些值通过与 GNU 兼容的工具链传递到编译命令行的 -std= 选项,如果它检测到您正在使用不支持标准值的较旧的工具链。替换方式如下

替换
c++11c++0x
c11c1x
c++14c++1y
c++17c++1z

如果此属性明确设置为 true,则 Qbs 将始终使用回退值。

如果此属性明确设置为 false,则 Qbs 从不使用回退值。

此属性对 Microsoft Visual C++ 编译器没有影响。

默认值:未定义

该属性自Qbs 1.11开始引入。


[自 Qbs 1.5] useObjcPrecompiledHeader : bool

useCPrecompiledHeader 类似,但用于 Objective-C。

默认值: true

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


[自 Qbs 1.5] useObjcxxPrecompiledHeader : bool

useCPrecompiledHeader 类似,但用于 Objective-C++。

默认值: true

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


该属性特定于Unix平台。

是否使用 -rpath-link 链接器选项为递归共享对象。

默认:非Darwin Unix平台或在针对macOS 10.4.x及更早版本时为 true

此属性自 Qbs 1.8 以来引入。


[自Qbs 1.3起] useRPaths : bool

该属性特定于Unix平台。

如果 false,则防止链接器向二进制文件写入 rpaths

默认值: true

此属性自 Qbs 1.3 以来引入。


[自Qbs 1.10起] variantSuffix : string

当产品类型为 type staticlibrarydynamiclibrary 时,将其添加到目标产品名称的后缀。

在Darwin平台,应用程序和可加载模块也会受到影响。

默认情况下,除产品在 qbs.buildVariants 属性上多路复用时,此属性在所有平台上留空。在这种情况下,对于产品的调试版本,Windows上的默认值是 "d",而在Darwin平台(如macOS)上的默认值是 "_debug"。在所有其他平台和发布模式下,默认值是 []

例如,使用MSVC构建了一个名为 MyLib 的动态库,该库使用 qbs.buildVariants 属性进行多路复用,会产生名为 MyLib.dll(产品发布版本的文件)和 MyLibd.dll(产品的调试版本文件)的文件。

默认:平台特定。

此属性自 Qbs 1.10 以来引入。


visibility : string

该属性特定于Unix平台。

导出符号的可见级别。

可能值包括:"default""hidden""hiddenInlines""minimal",它结合了 "hidden""hiddenInlines"

默认值:"default"


warningLevel : string

编译器的警告级别:"none""all"

默认:"all"


weakFrameworks : stringList

该属性特定于苹果平台。

要弱链接的框架列表。

如果框架是您项目的一部分,请考虑使用Depends项。

默认值:未定义


[自Qbs 1.10起] windowsApiAdditionalPartitions : stringList

此属性仅适用于Windows。

除了由 windowsApiFamily(《WINAPI_FAMILY》)隐式启用的 Windows API 分区之外,还要启用其他附加的 Windows API 分区。

此值在构建Windows Store应用程序时使用。例如,将 windowsApiFamily 设置为 "pc" 并将此属性设置为 ["phone"] 将允许您创建针对所有通用Windows平台设备家族("Universal"应用程序)的应用程序。

可能值包括:"app""desktop""pc""phone""server""system",它们映射到Windows SDK中的相应的可能的 WINAPI_PARTITION_* 预处理器定义集。

默认:未定义,允许Windows SDK头文件根据WINAPI_FAMILY的值确定默认分区。

此属性自 Qbs 1.10 以来引入。

另请参阅windowsApiFamily


[自Qbs 1.0.1起] windowsApiCharacterSet : string

此属性仅适用于Windows。

Win32 API中使用的字符集。

"unicode" 定义了预处理器符号 UNICODE_UNICODE"mbcs" 定义 _MBCS,将值设置为 undefined 将使用默认字符集。

默认:"unicode"

此属性自 Qbs 1.0.1 以来引入。


[自Qbs 1.10起] windowsApiFamily : string

此属性仅适用于Windows。

应用程序或库所针对的Windows API家族。

此值在构建通用Windows平台应用程序时使用。

可能的值包括:"desktop""pc""phone""server""system",它们映射到Windows SDK中WINAPI_FAMILY预处理器定义的对应可能的值集。

默认值:未定义,这允许Windows SDK头文件确定默认值。

此属性自 Qbs 1.10 以来引入。


[自Qbs 1.19以来]windowsSdkVersion字符串

应使用哪个Windows SDK版本与MSVC工具链一起使用。默认情况下,使用最新SDK。

此属性特指Windows。默认值:未定义

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


©2023年Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。提供的文档根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt及其相关标志是Qt公司Ltd在芬兰和/或世界其他国家的商标。所有其他商标均为其各自所有者的财产。