规则
- <ph type="x-smartling-placeholder"></ph> j2objc_library
- <ph type="x-smartling-placeholder"></ph> objc_import
- <ph type="x-smartling-placeholder"></ph> objc_library
- <ph type="x-smartling-placeholder"></ph> available_xcodes
- <ph type="x-smartling-placeholder"></ph> xcode_config
- <ph type="x-smartling-placeholder"></ph> xcode_version
j2objc_library
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
此规则使用 J2ObjC 转换 Java 源代码 导出到 Objective-C,后者可用作 objc_library 和 objc_binary 的依赖项 规则。有关 J2ObjC 本身的详细信息,请参阅 J2ObjC 网站
可以使用 build 标志指定自定义 J2ObjC 转译标志
--j2objc_translation_flags
。
请注意,j2objc_library 目标中包含的翻译文件将 使用默认编译配置编译的,该配置与 在属性中未指定编译选项的 objc_library 规则。
此外,系统会在目标级别(而不是源代码级别)对生成的代码进行去重。如果您有两个 包含相同 Java 源文件的不同 Java 目标,您可能会看到重复的符号错误 。解决此问题的正确方法是将共享的 Java 源文件移至 一个可依赖的单独通用目标
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
deps
|
j2objc_library 、java_library 、
java_import 和java_proto_library 目标包含以下元素:
要转译为 Objective-C 的 Java 文件。
可达到的所有 J2ObjC 转换的工作方式因 Java 源代码的类型而异
包含在传递闭包中的文件。对于
用户可以在其代码中导入 J2ObjC 生成的头文件。以下项目的导入路径:
这些文件是原始 Java 工件的相对根路径。例如:
如果 proto_library 规则包含在此规则的传递闭包中,J2ObjC proto 也会
在二进制文件级别生成、编译和链接。对于 proto
|
entry_classes
|
--j2objc_dead_code_removal
标志处于启用状态,则此属性为必需属性。Java 类应在其规范名称中指定,规范名称由
Java
语言规范。
指定 --j2objc_dead_code_removal 标志后,系统将列出条目类
将以传递方式收集,并用作执行死代码分析的入口点。
然后,未使用的类将从最终的 ObjC app bundle 中移除。
|
jre_deps
|
j2objc_library 规则。默认情况下,仅关联核心 JRE 功能。
|
objc_import
objc_import(name, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)
此规则采用以下形式封装已编译的静态库:
.a
文件。它还允许使用
objc_library
支持的属性。
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
hdrs
|
这些头文件用于描述库的公共接口 可供本规则中的来源收录的或可作为独立来源纳入的 规则。此库的客户端不应包含的标头 应列在 srcs 属性中。 如果启用了模块,这些依赖项将在源代码中单独进行编译。 |
alwayslink
|
srcs 和 non_arc_srcs ,即使其中一些不包含
二进制文件引用的符号。
如果
二进制文件。例如,如果您的代码注册以接收一些回调
提供的服务
|
archives
|
.a 文件列表,
都取决于此目标
|
includes
|
#include/#import 个搜索路径的列表
以及所有依赖的目标。
这是为了支持不
在其路径中指定完整的工作区路径
#import/#include 语句。
路径是相对于软件包目录进行解释的,并且
genfile 和 bin 根目录(例如 与 COPTS 不同,系统会为此规则添加这些标记 以及依赖于它的所有规则(注意:并非其所依赖的规则!)是 必须格外小心,因为这可能会造成深远的影响。如有疑问,请添加 “-iquote”标志更改为 COPTS。 |
sdk_dylibs
|
|
sdk_frameworks
|
关联某个顶级 Apple 二进制文件时,该二进制文件的 传递依赖关系图的链接。 |
sdk_includes
|
#include/#import 个搜索路径的列表
以及所有依赖的目标,其中每条路径都相对于
$(SDKROOT)/usr/include 。
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
objc_library
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
此规则会根据给定 Objective-C 源文件生成静态库。
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
deps
|
|
srcs
|
|
hdrs
|
这些头文件用于描述库的公共接口 可供本规则中的来源收录的或可作为独立来源纳入的 规则。此库的客户端不应包含的标头 应列在 srcs 属性中。 如果启用了模块,这些依赖项将在源代码中单独进行编译。 |
alwayslink
|
srcs 和 non_arc_srcs ,即使其中一些不包含
二进制文件引用的符号。
如果
二进制文件。例如,如果您的代码注册以接收一些回调
提供的服务
|
copts
|
请注意,对于生成的 Xcode 项目,使用“-I”指定的目录路径旗帜 系统会解析 copts,并附上“$(WORKSPACE_ROOT)/”前缀是否为相对路径; 添加到关联的 Xcode 目标的标头搜索路径中。 |
defines
|
-D 标志。他们应该在
采用 KEY=VALUE 或 KEY 格式,并且
不仅会传递到针对该目标的编译器(作为 copts
且所有 objc_ 的依赖项都属于此目标。
需遵循 "Make variable" 替换和
Bourne shell 令牌化。
|
enable_modules
|
|
includes
|
#include/#import 个搜索路径的列表
以及所有依赖的目标。
这是为了支持不
在其路径中指定完整的工作区路径
#import/#include 语句。
路径是相对于软件包目录进行解释的,并且
genfile 和 bin 根目录(例如 与 COPTS 不同,系统会为此规则添加这些标记 以及依赖于它的所有规则(注意:并非其所依赖的规则!)是 必须格外小心,因为这可能会造成深远的影响。如有疑问,请添加 “-iquote”标志更改为 COPTS。 |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
关联某个顶级 Apple 二进制文件时,该二进制文件的 传递依赖关系图的链接。 |
sdk_includes
|
#include/#import 个搜索路径的列表
以及所有依赖的目标,其中每条路径都相对于
$(SDKROOT)/usr/include 。
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
available_xcodes
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
xcode_config
规则实例可以依赖于此规则的两个目标
表示远程和本地可用的 Xcode 版本。
这允许从集合可用的 Xcode 中选择官方 XCode 版本。
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
default
|
|
versions
|
|
xcode_config
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
此规则的单个目标可由 --xcode_version_config
build 引用
标志,用于将 --xcode_version
标志转换为可接受的官方 Xcode 版本。
这允许从多个已注册的别名中选择官方 Xcode 版本。
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
default
|
xcode_version 目标指定的版本:
未指定 xcode_version 构建标志。必须(如果有)
已设置 versions 。如果 remote_versions 或
已设置 local_versions 。
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version 项已接受 |
xcode_version
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)
表示单个官方 xcode 版本,其中包含该 xcode 版本的可接受别名。
请参阅 xcode_config
规则。
参数
属性 | |
---|---|
name |
此目标的唯一名称。 |
default_ios_sdk_version
|
ios_sdk_version 构建标志将替换此处指定的值。
|
default_macos_sdk_version
|
macos_sdk_version 构建标志将替换此处指定的值。
|
default_tvos_sdk_version
|
tvos_sdk_version 构建标志将替换此处指定的值。
|
default_watchos_sdk_version
|
watchos_sdk_version 构建标志将替换此处指定的值。
|
version
|
|