Goal-C 規則

回報問題 查看原始碼 夜間 7.2 7.1 7.0 6.5 6.4

規則

j2objc_library

查看規則來源
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, exec_compatible_with, exec_properties, features, jre_deps, restricted_to, tags, target_compatible_with, testonly, toolchains, 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, 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 檔案。另外,您也能透過 Cloud Shell 的 objc_library 支援的屬性。

引數

屬性
name

名稱;必選

此目標的專屬名稱。

deps

標籤清單;預設為 []

這個目標所依賴的目標清單。
hdrs

標籤清單;預設為 []

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

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

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

Boolean;預設值為 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」)。

連結頂層 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, 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 檔案也可指定為 srcs。請注意以下事項: 以確保所提供的 .o 檔案架構保持一致 版本,避免缺少符號連接器錯誤。
hdrs

標籤清單;預設為 []

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

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

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

Boolean;預設值為 False

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

字串清單;預設值為 []

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

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

defines

字串清單;預設值為 []

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

Boolean;預設值為 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」)。

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

sdk_includes

字串清單;預設值為 []

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

Boolean;預設值為 False

textual_hdrs

標籤清單;預設為 []

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

字串清單;預設值為 []

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