Goal-C 規則

回報問題 查看原始碼 Nightly · 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 檔案格式封裝已編譯的靜態資料庫。另外,您也能透過 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) 也包含在內 實際的用戶端根目錄

最佳化不同,系統會在這項規則中新增這些標記 並提供相關的所有規則(注意:不是依附的規則!)請務必謹慎操作,因為這可能會造成廣泛的影響。如有疑問,請改為在 COPTS 中加入「-iquote」標記。

sdk_dylibs

字串清單;預設為 []

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

字串清單;預設為 []

要連結的 SDK 架構名稱 (例如「AddressBook」、「QuartzCore」)。

連結頂層 Apple 二進位檔時,系統會連結該二進位檔的傳遞依附元件圖表中列出的所有 SDK 架構。

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 屬性中。

如果已啟用模組,這些模組會從來源中個別編譯。

布林值,預設為 False

如果為 1,則任何依附 (直接或間接) 於此程式庫的套件或二進位檔,都會連結 srcsnon_arc_srcs 中列出的檔案的所有物件檔案,即使其中有些檔案不含任何由二進位檔參照的符號。如果二進位檔中的程式碼並未明確呼叫您的程式碼 (例如,如果您的程式碼註冊接收某些服務提供的回呼),這項功能就很實用。
copts

字串清單;預設為 []

要傳遞至編譯器的其他標記。 取決於「化變數」替代和 Bourne 殼層權杖化。 這些標記只會套用至這個目標,而不會套用至這個目標所依賴的項目,或依賴這個目標的項目。

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

defines

字串清單;預設為 []

要傳遞至編譯器的額外 -D 標記。這些值應為 KEY=VALUE 或簡單的 KEY 格式,且不僅會傳遞至此目標的編譯器 (如同 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 根目錄 (例如 blaze-genfiles/pkg/includedirblaze-out/pkg/includedir)。

COPTS 不同的是,這些標記會新增至此規則和所有依附此規則的規則。(注意:而不是仰賴的規則!)成為 因為這樣可能帶來相當深遠的影響如有疑問,請改為在 COPTS 中加入「-iquote」標記。

linkopts

字串清單;預設為 []

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

標籤;預設為 None

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

字串;預設為 ""

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

標籤清單;預設為 []

處理後的 Objective-C 檔案清單,用於建立不使用 ARC 的程式庫目標。這個屬性中的檔案的處理方式與 srcs 屬性,但在未啟用 ARC 的情況下進行編譯。
pch

標籤;預設為 None

標頭檔案,用於在每個正在編譯的來源檔案 (ARC 和非 ARC) 前方加上此檔案。我們強烈建議您不要在 BUILD 檔案中使用 pch 檔案,且應將其視為已淘汰的功能。由於 PCH 檔案並未實際預先編譯,因此這並非版本構建速度的強化功能,而只是全域依附元件。從建構效率的角度來看,您其實最好直接在需要的來源中加入所需項目。
sdk_dylibs

字串清單;預設值為 []

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

字串清單;預設為 []

要連結的 SDK 架構名稱 (例如「AddressBook」、「QuartzCore」)。

連結頂層 Apple 二進位檔時,系統會連結該二進位檔的傳遞依附元件圖表中列出的所有 SDK 架構。

sdk_includes

字串清單;預設值為 []

要新增至這個目標和所有依附目標的 #include/#import 搜尋路徑清單,其中每個路徑都相對於 $(SDKROOT)/usr/include
stamp

布林值;預設值為 False

textual_hdrs

標籤清單;預設為 []

指定一系列 由這項規則的來源檔案或將此規則的使用者納入標頭 資源庫。與 HDR 不同,這些檔案不會從來源中單獨編譯。
weak_sdk_frameworks

字串清單;預設為 []

要以弱連結方式連結的 SDK 架構名稱。例如「MediaAccessibility」。 與一般連結的 SDK 架構不同,如果在執行階段中未出現弱連結架構的符號,就不會發生錯誤。