Goal-C 規則

回報問題 。 查看來源 。 。 。 。 。 夜間 7.3 。 。 7.2 。 。 7.1 。 。 7.0 。 。 6.5

規則

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 網站

您可以使用建構標記指定自訂 J2ObjC 傳輸標記 --j2objc_translation_flags

請注意,j2objc_library 目標中的翻譯檔案 預設編譯設定,與 建立一個 objc_library 規則,而屬性中沒有指定編譯選項。

此外,系統會在目標層級 (而非來源層級) 刪除重複的程式碼。如果你有兩個 包含相同 Java 來源檔案的不同 Java 目標,您可能會看到重複的符號錯誤 連結時間。解決這個問題的正確方式是將共用的 Java 來源檔案移到 可以依賴的個別常見目標。

引數

屬性
name

名稱;必選

此目標的專屬名稱。

deps

標籤清單;預設為 []

j2objc_libraryjava_library 的清單 java_importjava_proto_library 個目標包含 將 Java 檔案轉入 Objective-C。

所有允許觸及的java_libraryjava_import目標 穿過 exportsdepsruntime_deps 翻譯及編譯過的檔案,包括透過 Java 註解處理產生的檔案 系統不支援 code>java_import 目標 (不含 srcjar) 。

J2ObjC 轉譯的運作方式會因來源 Java 來源類型而異 檔案。針對以下項目提供的所有 .java 來源檔案: java_librarysrcs,對應的 .h 和 .m 來源檔案 。針對以下 srcs 所含的每個來源 Jar 第 java_librarysrcjar 項,共 java_import 項,這是 而對應的 .h 和 .m 來源檔案,將包含該 jar 檔案的所有程式碼。

使用者可以在程式碼中匯入 J2ObjC 產生的標頭檔案。的匯入路徑 這些檔案是原始 Java 構件的根相關路徑。例如: 「//some/package/foo.java」的匯入路徑是 some/package/foo.h//some/package/bar.srcjarsome/package/bar.h

如果 proto_library 規則未在這項規則的遞移性停用,J2ObjC proto 也會 產生、編譯及連結於二進位檔層級適用於 proto //some/proto/foo.proto,使用者可透過匯入功能參照產生的程式碼 路徑 some/proto/foo.j2objc.pb.h

entry_classes

字串清單;預設值為 []

將直接參照已翻譯 ObjC 對應項目的 Java 類別清單 依據使用者的 ObjC 程式碼啟用旗標 --j2objc_dead_code_removal 時,必須提供這項屬性。指定 Java 類別時,應依照 Java 語言規格。 指定 --j2objc_dead_code_removal 旗標時,會列出項目類別 將收集資料,並用做無效程式碼分析的進入點。 系統會將未使用的類別從最終的 ObjC 應用程式套件中移除。
jre_deps

標籤清單;預設為 []

所有 Java 程式碼翻譯所需的其他 JRE 模擬程式庫清單 j2objc_library 規則。系統只會連結核心 JRE 功能。

objc_import

查看規則來源
objc_import(name, deps, 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 檔案。另外,您也能透過 Cloud Shell 的 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 roots (例如 blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) 也包含在內 實際的用戶端根目錄

最佳化不同,系統會在這項規則中新增這些標記 並提供相關的所有規則(注意:而不是仰賴的規則!)成為 因為這樣可能帶來相當深遠的影響有疑慮就加上 「-iquote」標記為 COPTS

sdk_dylibs

字串清單;預設值為 []

要連結的 SDK .dylib 程式庫名稱。例如「libz」或 「libArchive」。 "libc++"如果二進位檔有 C++ 或 依附元件樹狀結構中的 Objective-C++ 來源。連結二進位檔時 該二進位檔轉換依附元件圖中命名的所有程式庫都屬於
sdk_frameworks

字串清單;預設值為 []

要連結的 SDK 架構名稱 (例如「AddressBook」、「QuartzCore」)。「UIKit」和 「Foundation」(基礎)是針對 iOS、tvOS、visionOS、 和 watchOS 平台的關聯如果是 macOS,僅支援「Foundation」一律包含在內。

連結頂層 Apple 二進位檔時,該二進位檔中 連結及遞移依附元件圖表。

sdk_includes

字串清單;預設值為 []

要新增至這個目標的 #include/#import 個搜尋路徑清單 並列出所有目標 (每條路徑都與 $(SDKROOT)/usr/include
textual_hdrs

標籤清單;預設為 []

指定一系列 由這項規則的來源檔案或將此規則的使用者納入標頭 資源庫。與 hdrs 不同,不會與 hdrs 分開編譯 資料來源
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, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, 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 檔案也可指定為 srcs。請注意以下事項: 以確保所提供的 .o 檔案架構保持一致 版本,避免缺少符號連接器錯誤。
hdrs

標籤清單;預設為 []

已發布 C、C++、Objective-C 和 Objective-C++ 標頭檔案的清單 才會納入適用規則的來源。

這些標頭說明程式庫的公用介面, 由來源納入這項規則或適用 不過,編寫這類演算法並不容易 因為我們無法寫出所有可能的規則不應由這個程式庫的用戶端包含的標頭 應改為列在 srcs 屬性中。

如果已啟用模組,系統會將這些模組與來源分開編譯。

布林值;預設值為 False

如為 1,則任何直接或間接與此協議相依的套件或二進位檔 資料夾中列出的檔案 srcsnon_arc_srcs (即使有些不含任何值) 二進位參照的符號。 如果程式碼中的程式碼未明確呼叫,這個方法就很實用 二進位檔案 (舉例來說,如果您的程式碼註冊以取得某些回呼) 這項工具可讓您存取 該基礎架構的各項服務
copts

字串清單;預設值為 []

要傳遞至編譯器的額外標記。 取決於「化變數」替代和 Bourne 殼層權杖化。 這些標記僅適用於這個目標,不適用於 也取決於 因素

請注意,針對產生的 Xcode 專案,請使用「-I」指定的目錄路徑旗標 動物被剖析,在前面加上「$(WORKSPACE_ROOT)/」如果 Pod 是相對路徑 新增至相關 Xcode 目標的標頭搜尋路徑。

defines

字串清單;預設值為 []

要傳遞至編譯器的額外 -D 標記。他們應該會 KEY=VALUEKEY 形式, 不僅會傳遞給此目標的編譯器 (做為 copts) ) 以及此目標的所有 objc_ 依附元件。 取決於「化變數」替代和 Bourne 殼層權杖化
enable_modules

布林值;預設值為 False

啟用 Clang 模組支援 (透過 -fmodules)。 設為 1 則可 @import 系統標頭和其他目標: @import UIKit; @import path_to_package_target;
implementation_deps

標籤清單;預設為 []

該程式庫鎖定的其他程式庫清單。取消喜歡 deps,標頭和包含這些程式庫的路徑 (及其全部路徑) 遞移依附元件) 只會用於這個程式庫的編譯作業,不適用於 依靠它使用 implementation_deps 指定的程式庫仍保持連結狀態 仰賴這個程式庫的二進位目標中
includes

字串清單;預設值為 []

要新增至這個目標的 #include/#import 個搜尋路徑清單 且全部取決於指定目標 這會支援第三方和開放原始碼程式庫 指定整個工作區路徑 #import/#include 陳述式。

系統會根據套件目錄解譯路徑, genfiles 和 bin roots (例如 blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) 也包含在內 實際的用戶端根目錄

最佳化不同,系統會在這項規則中新增這些標記 並提供相關的所有規則(注意:而不是仰賴的規則!)成為 因為這樣可能帶來相當深遠的影響有疑慮就加上 「-iquote」標記為 COPTS

linkopts

字串清單;預設值為 []

要傳遞至連結器的額外旗標。
module_map

標籤;預設為 None

這個目標的自訂 Clang 模組地圖。不建議使用自訂模組地圖。大多數 使用者應使用 Bazel 產生的模組對應。 如有指定,Bazel 就不會產生這個目標的模組對應,但會傳遞 提供給編譯器的模組對應
module_name

String;預設值為 ""

設定這個目標的模組名稱。根據預設,模組名稱為 所有以 _ 取代的特殊符號,例如://foo/baz:bar 可以匯入為 foo_baz_bar。
non_arc_srcs

標籤清單;預設為 []

為建立目標 「並未」使用 ARC 的程式庫目標 這個屬性中的檔案的處理方式與 srcs 屬性,但在未啟用 ARC 的情況下進行編譯。
pch

標籤;預設為 None

在每個編譯的來源檔案前面加上標頭檔案 (包括弧線) 非弧形)。 我們不建議在 BUILD 檔案中使用 pch 檔案, 視為已淘汰由於 pch 檔案實際上並未預先編譯,因此 只是一個全域依附元件從建構作業 我們認為,關鍵就在於改善成效 適時提供恰當的報導
sdk_dylibs

字串清單;預設值為 []

要連結的 SDK .dylib 程式庫名稱。例如「libz」或 「libArchive」。 "libc++"如果二進位檔有 C++ 或 依附元件樹狀結構中的 Objective-C++ 來源。連結二進位檔時 該二進位檔轉換依附元件圖中命名的所有程式庫都屬於
sdk_frameworks

字串清單;預設值為 []

要連結的 SDK 架構名稱 (例如「AddressBook」、「QuartzCore」)。「UIKit」和 「Foundation」(基礎)是針對 iOS、tvOS、visionOS、 和 watchOS 平台的關聯如果是 macOS,僅支援「Foundation」一律包含在內。

連結頂層 Apple 二進位檔時,該二進位檔中 連結及遞移依附元件圖表。

sdk_includes

字串清單;預設值為 []

要新增至這個目標的 #include/#import 個搜尋路徑清單 並列出所有目標 (每條路徑都與 $(SDKROOT)/usr/include
textual_hdrs

標籤清單;預設為 []

指定一系列 由這項規則的來源檔案或將此規則的使用者納入標頭 資源庫。與 hdrs 不同,不會與 hdrs 分開編譯 資料來源
weak_sdk_frameworks

字串清單;預設值為 []

要連結較弱的 SDK 架構名稱。舉例來說: 「MediaAccessibility」。 符號與定期連結的 SDK 架構不同 不會導致錯誤發生 都不會在執行階段出現

available_xcodes

查看規則來源
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

xcode_config 規則執行個體可以依附於這項規則的兩個目標 指出遠端和本機可用的 Xcode 版本。 這可讓您從集體可用的 Xcode 中選取官方 Xcode 版本。

引數

屬性
name

名稱;必選

此目標的專屬名稱。

default

標籤無法設定;必選

這個平台的預設 Xcode 版本。
versions

標籤清單;無法設定;預設為 []

此平台可用的 Xcode 版本。

xcode_config

查看規則來源
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

--xcode_version_config 版本可以參照這項規則的單一目標 旗標,將 --xcode_version 旗標翻譯成系統接受的官方 xcode 版本。 如此就能從數個已註冊的別名中選擇正式的 Xcode 版本。

引數

屬性
name

名稱;必選

此目標的專屬名稱。

default

標籤無法設定;預設為 None

要使用的預設官方 xcode 版本。 如果發生以下情況,系統將使用提供的 xcode_version 目標指定版本 未指定 xcode_version 建構旗標。(如有) 已設定 versions。如果 remote_versionslocal_versions已設定。
local_versions

標籤無法設定;預設為 None

本機可用的 xcode_version 目標。 這些會與 local_versions 搭配使用,以選取互通性 版本。如果已設定 versions,就無法設定。
remote_versions

標籤無法設定;預設為 None

可遠端取得的 xcode_version 目標。 這些會與 remote_versions 搭配使用,以選取互通性 版本。如果已設定 versions,就無法設定。
versions

標籤清單;無法設定;預設為 []

可能使用的 xcode_version 個目標。 如果 xcode_version 建構旗標的值與其中一個別名相符 或任何指定 xcode_version 目標的版本編號、相符 系統會使用指定目標如果 remote_versionslocal_versions已設定。

xcode_version

查看規則來源
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

代表單一的 Xcode 版本,具有該 Xcode 版本可接受的別名。 請參閱 xcode_config 規則。

引數

屬性
name

名稱;必選

此目標的專屬名稱。

default_ios_sdk_version

String;不可設定;預設為 ""

使用這個 xcode 版本時,預設使用的 iOS SDK 版本。 ios_sdk_version 建構旗標會覆寫此處指定的值。
default_macos_sdk_version

String;不可設定;預設為 ""

使用此 xcode 版本時,預設使用的 macosx SDK 版本。 macos_sdk_version 建構旗標會覆寫此處指定的值。
default_tvos_sdk_version

String;不可設定;預設為 ""

使用這個 xcode 版本時,預設使用的 tvos SDK 版本。 tvos_sdk_version 建構旗標會覆寫此處指定的值。
default_visionos_sdk_version

String;不可設定;預設為 ""

使用這個 xcode 版本時,預設使用的 Vision SDK 版本。 visionos_sdk_version 建構旗標會覆寫此處指定的值。
default_watchos_sdk_version

String;不可設定;預設為 ""

使用這個 xcode 版本時,預設使用的 Watchos SDK 版本。 watchos_sdk_version 建構旗標會覆寫此處指定的值。
version

String;不可設定;必選

Xcode 的官方版本號碼。