規則
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_translation_flags
指定自訂 J2ObjC 轉譯標記。
請注意,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 應用程式套件中移除。
|
jre_deps
|
j2objc_library 規則翻譯的所有 Java 程式碼所需的其他 JRE 模擬程式庫清單。根據預設,系統只會連結核心 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 架構都會互相連結。 |
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, implementation_deps, 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 專案,在 Copts 中使用「-I」旗標指定的目錄路徑會遭到剖析,且在為相對路徑時,會加上「$(WORKSPACE_ROOT)/」,並新增至相關聯 Xcode 目標的標頭搜尋路徑。 |
defines
|
-D 旗標。這些程式碼應採用 KEY=VALUE 或 KEY 格式,而且不僅會傳遞給這個目標的編譯器 (就像 copts 一樣),也會傳遞至目標的所有 objc_ 依附元件。須遵守「Make 變數」替代和 Bourne 殼層權杖化相關說明。
|
enable_modules
|
|
implementation_deps
|
deps 不同,這些程式庫的標頭和包含的路徑 (及其所有遞移依附元件) 只會用於編譯這個程式庫,而不會用於依賴這個程式庫的程式庫。以 implementation_deps 指定的程式庫在依附於這個程式庫的二進位檔目標中仍保持連結狀態。 |
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 架構都會互相連結。 |
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
建構旗標可參照這項規則的單一目標,以便將 --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_visionos_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_visionos_sdk_version
|
visionos_sdk_version 建構旗標將覆寫這裡指定的值。
|
default_watchos_sdk_version
|
watchos_sdk_version 建構旗標將覆寫這裡指定的值。
|
version
|
|