Objective-C 规则

报告问题 查看源代码 每晚 · 7.3。 · 7.2。 · 7.1。 · 7.0。 · 6.5

规则

objc_import

查看规则源代码
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

此规则会以 .a 文件的形式封装已编译的静态库。此外,它还允许使用 objc_library 支持的相同属性导出标头和资源。

参数

属性
name

名称;必需

此目标的唯一名称。

deps

标签列表;默认值为 []

此目标依赖的目标列表。
hdrs

标签列表;默认值为 []

我们发布了一系列 C、C++、Objective-C 和 Objective-C++ 头文件 添加到依赖规则中的来源。

这些头文件用于描述库的公共接口 可供本规则中的来源收录的或可作为独立来源纳入的 规则。此库的客户端不应包含的标头 应列在 srcs 属性中。

如果启用模块,这些资源将与源代码分开编译。

布尔值;默认值为 False

如果为 1,则表示(直接或间接)依赖于此 会链接至 srcsnon_arc_srcs,即使其中一些不包含 二进制文件引用的符号。 如果二进制文件中的代码未明确调用您的代码(例如,您的代码注册接收某些服务提供的回调),此方法非常有用。
archives

标签列表;必需

提供给依赖于此目标的 Objective-C 目标的 .a 文件的列表。
includes

字符串列表;默认值为 []

要添加到此目标和所有依赖目标的 #include/#import 搜索路径的列表。 这是为了支持不 在其 #import/#include 语句。

这些路径相对于软件包目录进行解析,除了实际客户端根目录之外,还包含 genfiles 和 bin 根目录(例如 blaze-genfiles/pkg/includedirblaze-out/pkg/includedir)。

COPTS 不同,这些标志会为此规则以及依赖于它的每个规则添加。(注意:并非其所依赖的规则!)是 必须格外小心,因为这可能会造成深远的影响。如有疑问,请添加 “-iquote”标志更改为 COPTS

sdk_dylibs

字符串列表;默认值为 []

要关联的 SDK .dylib 库的名称。例如“libz”或“libarchive”。 如果二进制文件的依赖项树中包含任何 C++ 或 Objective-C++ 源代码,系统会自动包含“libc++”。链接二进制文件时,系统会使用该二进制文件的传递依赖项图中命名的所有库。
sdk_frameworks

字符串列表;默认值为 []

要关联的 SDK 框架的名称(例如“AddressBook”“QuartzCore”)。

关联某个顶级 Apple 二进制文件时,该二进制文件的 传递依赖关系图的链接。

sdk_includes

字符串列表;默认值为 []

要添加到此目标和所有依赖目标的 #include/#import 搜索路径的列表,其中每个路径都相对于 $(SDKROOT)/usr/include
textual_hdrs

标签列表;默认值为 []

此规则中的源文件或此库的用户作为头文件包含的 C、C++、Objective-C 和 Objective-C++ 文件的列表。与 HDR 不同,这些内容不会与 来源。
weak_sdk_frameworks

字符串列表;默认值为 []

要与之弱相关联的 SDK 框架的名称。例如“MediaAccessibility”。 与定期关联的 SDK 框架不同, 如果关联, 。

objc_library

查看规则源代码
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

此规则会根据指定的 Objective-C 源文件生成静态库。

参数

属性
name

名称;必需

此目标的唯一名称。

deps

标签列表;默认值为 []

此目标依赖的目标列表。
srcs

标签列表;默认值为 []

C、C++、Objective-C 和 Objective-C++ 源文件和头文件的列表 和/或(“.s”“.S”或“.asm”)汇编源文件 库目标。 这些是您已签入的文件以及所有已生成的文件。 源文件会使用 Clang 编译为 .o 文件。头文件可以由此目标的 srcs 属性中的任何源代码或头文件包含/导入,但不能由 hdrs 中的头文件或依赖于此规则的任何目标包含/导入。此外,可将预编译的 .o 文件作为 src 提供。请注意 确保所提供的 .o 文件架构和 以免缺少符号链接器错误。
hdrs

标签列表;默认值为 []

此库发布的 C、C++、Objective-C 和 Objective-C++ 头文件列表,以供依赖项规则中的源文件包含。

这些头文件用于描述库的公共接口 可供本规则中的来源收录的或可作为独立来源纳入的 规则。此库的客户端不应包含的标头 应列在 srcs 属性中。

如果启用模块,这些资源将与源代码分开编译。

布尔值;默认值为 False

如果为 1,则表示(直接或间接)依赖于此 会链接至 srcsnon_arc_srcs,即使其中一些不包含 二进制文件引用的符号。 如果二进制文件中的代码未明确调用您的代码(例如,您的代码注册接收某些服务提供的回调),此方法非常有用。
copts

字符串列表;默认值为 []

要传递给编译器的额外标志。会受到 “Make 变量”替换和 Bourne shell 令牌化的影响。这些标记仅适用于此目标,而不适用于 或依赖于它的对象。

请注意,对于生成的 Xcode 项目,系统会解析在 copts 中使用“-I”标志指定的目录路径,如果这些路径是相对路径,则会在其前面附加“$(WORKSPACE_ROOT)/”,并将其添加到关联的 Xcode 目标的头文件搜索路径。

defines

字符串列表;默认值为 []

要传递给编译器的额外 -D 标志。它们应采用 KEY=VALUEKEY 的形式,并且不仅会传递给此目标的编译器(就像 copts 一样),还会传递给此目标的所有 objc_ 依赖项。会受到 “Make 变量”替换和 Bourne shell 令牌化的影响。
enable_modules

布尔值;默认值为 False

启用 clang 模块支持(通过 -fmodules)。 将此值设为 1 后,您就可以 @import 系统头文件和其他目标: @import UIKit; @import path_to_package_target;
implementation_deps

标签列表;默认值为 []

库目标所依赖的其他库的列表。取消 deps,这些库(及其所有库)的头文件和 include 路径 传递依赖项)仅用于编译此库,而不会用于 一切都依赖于它使用 implementation_deps 指定的库仍处于关联状态 依赖于此库的二进制目标中
includes

字符串列表;默认值为 []

要添加到此目标和所有依赖目标的 #include/#import 搜索路径的列表。 这是为了支持不 在其 #import/#include 语句。

路径是相对于软件包目录进行解释的,并且 genfile 和 bin 根目录(例如 blaze-genfiles/pkg/includedir) 和 blaze-out/pkg/includedir)。 实际的客户端根目录

COPTS 不同,这些标志会为此规则以及依赖于它的每个规则添加。(注意:不是它依赖的规则!)请务必谨慎,因为这可能会产生深远影响。如果不确定,请改为向 COPTS 添加“-iquote”标志。

linkopts

字符串列表;默认值为 []

要传递给链接器的额外标志。
module_map

标签;默认值为 None

此目标的自定义 Clang 模块映射。不建议使用自定义模块映射。大多数人 用户应使用由 Bazel 生成的模块映射。 如果指定,Bazel 不会为此目标生成模块映射,但会将提供的模块映射传递给编译器。
module_name

字符串;默认值为 ""

设置此目标的模块名称。默认情况下,模块名称是带有 将所有特殊符号替换为 _,例如//foo/baz:bar can be import as foo_baz_bar。
non_arc_srcs

标签列表;默认值为 []

用于创建不使用 ARC 的库目标而经过处理的 Objective-C 文件的列表。系统处理此属性中的文件与 srcs 属性,但在未启用 ARC 的情况下进行编译。
pch

标签;默认值为 None

要附加到每个要编译的源文件(arc 和非 arc 源文件)的头文件。我们强烈建议不要在 BUILD 文件中使用 pch 文件,并且应将其视为已废弃。由于 pch 文件实际上并未预编译,因此这并非构建速度方面的增强,而只是一个全局依赖项。从构建效率的角度来看,您最好直接在需要的位置将所需内容添加到源代码中。
sdk_dylibs

字符串列表;默认值为 []

要关联的 SDK .dylib 库的名称。例如“libz”或“libarchive”。 如果二进制文件的依赖项树中包含任何 C++ 或 Objective-C++ 源代码,系统会自动包含“libc++”。链接二进制文件时,系统会使用该二进制文件的传递依赖项图中命名的所有库。
sdk_frameworks

字符串列表;默认值为 []

要关联的 SDK 框架的名称(例如“AddressBook”“QuartzCore”)。

关联某个顶级 Apple 二进制文件时,该二进制文件的 传递依赖关系图的链接。

sdk_includes

字符串列表;默认值为 []

要添加到此定位条件的 #include/#import 个搜索路径的列表 以及所有依赖的目标,其中每条路径都相对于 $(SDKROOT)/usr/include
stamp

布尔值;默认值为 False

textual_hdrs

标签列表;默认值为 []

此规则中的源文件或此库的用户作为头文件包含的 C、C++、Objective-C 和 Objective-C++ 文件的列表。与 hdr 不同,这些文件不会与源代码分开编译。
weak_sdk_frameworks

字符串列表;默认值为 []

要与之弱相关联的 SDK 框架的名称。例如“MediaAccessibility”。 与定期关联的 SDK 框架不同, 如果关联, 。