Quy tắc Objective-C

Báo cáo vấn đề Xem nguồn Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Quy tắc

objc_import

Xem nguồn quy tắc
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, includes, package_metadata, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

Quy tắc này đóng gói một thư viện tĩnh đã được biên dịch ở dạng tệp .a. Thư viện này cũng cho phép xuất các tiêu đề và tài nguyên bằng cách sử dụng các thuộc tính tương tự mà objc_library hỗ trợ.

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên riêng cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các mục tiêu mà mục tiêu này phụ thuộc vào.
hdrs

Danh sách nhãn; mặc định là []

Danh sách các tệp tiêu đề C, C++, Objective-C và Objective-C++ do thư viện này xuất bản để các nguồn trong các quy tắc phụ thuộc đưa vào.

Các tiêu đề này mô tả giao diện công khai cho thư viện và sẽ được cung cấp để các nguồn trong quy tắc này hoặc trong các quy tắc phụ thuộc đưa vào. Các tiêu đề không dành cho một ứng dụng của thư viện này nên được liệt kê trong thuộc tính srcs.

Các tệp này sẽ được biên dịch riêng biệt với nguồn nếu bạn bật mô-đun.

Boolean; giá trị mặc định là False

Nếu là 1, mọi gói hoặc tệp nhị phân phụ thuộc (trực tiếp hoặc gián tiếp) vào thư viện này sẽ liên kết trong tất cả các tệp đối tượng cho các tệp có trong srcsnon_arc_srcs, ngay cả khi một số tệp không chứa biểu tượng nào mà tệp nhị phân tham chiếu. Điều này hữu ích nếu mã của bạn không được mã trong tệp nhị phân gọi một cách rõ ràng, ví dụ: nếu mã của bạn đăng ký nhận một số lệnh gọi lại do một số dịch vụ cung cấp.
archives

Danh sách nhãn; bắt buộc

Danh sách các tệp .a được cung cấp cho các mục tiêu Objective-C phụ thuộc vào mục tiêu này.
includes

Danh sách các chuỗi; mặc định là []

Danh sách các đường dẫn tìm kiếm #include/#import cần thêm vào mục tiêu này và tất cả các mục tiêu phụ thuộc. Điều này nhằm hỗ trợ các thư viện bên thứ ba và thư viện nguồn mở không chỉ định toàn bộ đường dẫn không gian làm việc trong câu lệnh #import/#include.

Các đường dẫn được diễn giải tương ứng với thư mục gói, đồng thời các gốc genfiles và bin (ví dụ: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) được đưa vào ngoài gốc máy khách thực tế.

Không giống như COPTS, các cờ này được thêm cho quy tắc này và mọi quy tắc phụ thuộc vào quy tắc này. (Lưu ý: không phải là các quy tắc mà nó phụ thuộc vào!) Hãy hết sức cẩn thận vì việc này có thể gây ra những ảnh hưởng sâu rộng. Khi nghi ngờ, hãy thêm cờ "-iquote" vào COPTS.

sdk_dylibs

Danh sách các chuỗi; mặc định là []

Tên của các thư viện .dylib SDK cần liên kết. Ví dụ: "libz" hoặc "libarchive". "libc++" sẽ tự động được đưa vào nếu tệp nhị phân có bất kỳ nguồn C++ hoặc Objective-C++ nào trong cây phần phụ thuộc của tệp nhị phân đó. Khi liên kết một tệp nhị phân, tất cả các thư viện có tên trong biểu đồ phần phụ thuộc bắc cầu của tệp nhị phân đó đều được sử dụng.
sdk_frameworks

Danh sách các chuỗi; mặc định là []

Tên của các khung SDK cần liên kết (ví dụ: "AddressBook", "QuartzCore").

Khi liên kết một tệp nhị phân cấp cao nhất của Apple, tất cả các khung SDK có trong biểu đồ phần phụ thuộc bắc cầu của tệp nhị phân đó sẽ được liên kết.

sdk_includes

Danh sách các chuỗi; mặc định là []

Danh sách các đường dẫn tìm kiếm #include/#import để thêm vào mục tiêu này và tất cả các mục tiêu phụ thuộc, trong đó mỗi đường dẫn tương ứng với $(SDKROOT)/usr/include.
textual_hdrs

Danh sách nhãn; mặc định là []

Danh sách các tệp C, C++, Objective-C và Objective-C++ được đưa vào làm tiêu đề theo các tệp nguồn trong quy tắc này hoặc theo người dùng của thư viện này. Không giống như hdr, những tệp này sẽ không được biên dịch riêng biệt với các nguồn.
weak_sdk_frameworks

Danh sách các chuỗi; mặc định là []

Tên của các khung SDK để liên kết yếu. Ví dụ: "MediaAccessibility". Không giống như các khung SDK được liên kết thường xuyên, các biểu tượng từ các khung được liên kết yếu không gây ra lỗi nếu chúng không có trong thời gian chạy.

objc_library

Xem nguồn quy tắc
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, conlyopts, copts, cxxopts, defines, deprecation, enable_modules, exec_compatible_with, exec_group_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, package_metadata, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

Quy tắc này tạo ra một thư viện tĩnh từ các tệp nguồn Objective-C đã cho.

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên riêng cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các mục tiêu mà mục tiêu này phụ thuộc vào.
srcs

Danh sách nhãn; mặc định là []

Danh sách các tệp nguồn và tệp tiêu đề C, C++, Objective-C và Objective-C++, và/hoặc các tệp nguồn hợp ngữ (`.s`, `.S` hoặc `.asm`) được xử lý để tạo mục tiêu thư viện. Đây là các tệp đã được kiểm tra, cộng với mọi tệp được tạo. Các tệp nguồn được biên dịch thành tệp .o bằng Clang. Mọi nguồn hoặc tiêu đề trong thuộc tính srcs của mục tiêu này đều có thể bao gồm/nhập các tệp tiêu đề, nhưng không phải tiêu đề trong hdrs hoặc bất kỳ mục tiêu nào phụ thuộc vào quy tắc này. Ngoài ra, bạn có thể cung cấp các tệp .o được biên dịch trước dưới dạng srcs. Hãy cẩn thận để đảm bảo tính nhất quán trong cấu trúc của các tệp .o được cung cấp và cấu trúc của bản dựng để tránh lỗi trình liên kết biểu tượng bị thiếu.
hdrs

Danh sách nhãn; mặc định là []

Danh sách các tệp tiêu đề C, C++, Objective-C và Objective-C++ do thư viện này xuất bản để các nguồn trong các quy tắc phụ thuộc đưa vào.

Các tiêu đề này mô tả giao diện công khai cho thư viện và sẽ được cung cấp để các nguồn trong quy tắc này hoặc trong các quy tắc phụ thuộc đưa vào. Các tiêu đề không dành cho một ứng dụng của thư viện này nên được liệt kê trong thuộc tính srcs.

Các tệp này sẽ được biên dịch riêng biệt với nguồn nếu bạn bật mô-đun.

Boolean; giá trị mặc định là False

Nếu là 1, mọi gói hoặc tệp nhị phân phụ thuộc (trực tiếp hoặc gián tiếp) vào thư viện này sẽ liên kết trong tất cả các tệp đối tượng cho các tệp có trong srcsnon_arc_srcs, ngay cả khi một số tệp không chứa biểu tượng nào mà tệp nhị phân tham chiếu. Điều này hữu ích nếu mã của bạn không được mã trong tệp nhị phân gọi một cách rõ ràng, ví dụ: nếu mã của bạn đăng ký nhận một số lệnh gọi lại do một số dịch vụ cung cấp.
conlyopts

Danh sách các chuỗi; mặc định là []

Cờ bổ sung cần truyền cho trình biên dịch đối với các tệp C. Chịu sự thay thế "Tạo biến"phân tích cú pháp Bourne shell. Các cờ này sẽ chỉ áp dụng cho mục tiêu này, chứ không áp dụng cho những mục tiêu mà mục tiêu này phụ thuộc vào hoặc những mục tiêu phụ thuộc vào mục tiêu này.

Xin lưu ý rằng đối với dự án Xcode đã tạo, các đường dẫn thư mục được chỉ định bằng cờ "-I" trong copts sẽ được phân tích cú pháp, thêm "$(WORKSPACE_ROOT)/" vào trước nếu chúng là đường dẫn tương đối và được thêm vào đường dẫn tìm kiếm tiêu đề cho mục tiêu Xcode được liên kết.

copts

Danh sách các chuỗi; mặc định là []

Các cờ bổ sung để truyền đến trình biên dịch. Chịu sự thay thế "Tạo biến"phân tích cú pháp Bourne shell. Các cờ này sẽ chỉ áp dụng cho mục tiêu này, chứ không áp dụng cho những mục tiêu mà mục tiêu này phụ thuộc vào hoặc những mục tiêu phụ thuộc vào mục tiêu này.

Xin lưu ý rằng đối với dự án Xcode đã tạo, các đường dẫn thư mục được chỉ định bằng cờ "-I" trong copts sẽ được phân tích cú pháp, thêm "$(WORKSPACE_ROOT)/" vào trước nếu chúng là đường dẫn tương đối và được thêm vào đường dẫn tìm kiếm tiêu đề cho mục tiêu Xcode được liên kết.

cxxopts

Danh sách các chuỗi; mặc định là []

Cờ bổ sung để truyền đến trình biên dịch cho các tệp Objective-C++ và C++. Chịu sự thay thế "Tạo biến"phân tích cú pháp Bourne shell. Các cờ này sẽ chỉ áp dụng cho mục tiêu này, chứ không áp dụng cho những mục tiêu mà mục tiêu này phụ thuộc vào hoặc những mục tiêu phụ thuộc vào mục tiêu này.

Xin lưu ý rằng đối với dự án Xcode đã tạo, các đường dẫn thư mục được chỉ định bằng cờ "-I" trong copts sẽ được phân tích cú pháp, thêm "$(WORKSPACE_ROOT)/" vào trước nếu chúng là đường dẫn tương đối và được thêm vào đường dẫn tìm kiếm tiêu đề cho mục tiêu Xcode được liên kết.

defines

Danh sách các chuỗi; mặc định là []

Các cờ -D bổ sung để truyền đến trình biên dịch. Chúng phải ở dạng KEY=VALUE hoặc chỉ là KEY và được truyền không chỉ đến trình biên dịch cho mục tiêu này (dưới dạng copts) mà còn đến tất cả các đối tượng phụ thuộc objc_ của mục tiêu này. Chịu sự thay thế "Tạo biến"phân tích cú pháp Bourne shell.
enable_modules

Boolean; giá trị mặc định là False

Bật tính năng hỗ trợ mô-đun clang (thông qua -fmodules). Nếu đặt giá trị này thành 1, bạn có thể @import tiêu đề hệ thống và các mục tiêu khác: @import UIKit; @import path_to_package_target;
implementation_deps

Danh sách nhãn; mặc định là []

Danh sách các thư viện khác mà mục tiêu thư viện phụ thuộc vào. Không giống như deps, các tiêu đề và đường dẫn bao gồm của các thư viện này (và tất cả các deps bắc cầu của chúng) chỉ được dùng để biên dịch thư viện này, chứ không phải các thư viện phụ thuộc vào thư viện này. Các thư viện được chỉ định bằng implementation_deps vẫn được liên kết trong các mục tiêu nhị phân phụ thuộc vào thư viện này.
includes

Danh sách các chuỗi; mặc định là []

Danh sách các đường dẫn tìm kiếm #include/#import cần thêm vào mục tiêu này và tất cả các mục tiêu phụ thuộc. Điều này nhằm hỗ trợ các thư viện bên thứ ba và thư viện nguồn mở không chỉ định toàn bộ đường dẫn không gian làm việc trong câu lệnh #import/#include.

Các đường dẫn được diễn giải tương ứng với thư mục gói, đồng thời các gốc genfiles và bin (ví dụ: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) được đưa vào ngoài gốc máy khách thực tế.

Không giống như COPTS, các cờ này được thêm cho quy tắc này và mọi quy tắc phụ thuộc vào quy tắc này. (Lưu ý: không phải là các quy tắc mà nó phụ thuộc vào!) Hãy hết sức cẩn thận vì việc này có thể gây ra những ảnh hưởng sâu rộng. Khi nghi ngờ, hãy thêm cờ "-iquote" vào COPTS.

linkopts

Danh sách các chuỗi; mặc định là []

Các cờ bổ sung để truyền đến trình liên kết.
module_map

Nhãn; mặc định là None

bản đồ mô-đun Clang tuỳ chỉnh cho mục tiêu này. Bạn không nên sử dụng bản đồ mô-đun tuỳ chỉnh. Hầu hết người dùng nên sử dụng bản đồ mô-đun do Bazel tạo. Nếu được chỉ định, Bazel sẽ không tạo bản đồ mô-đun cho mục tiêu này, nhưng sẽ truyền bản đồ mô-đun đã cung cấp cho trình biên dịch.
module_name

Chuỗi; giá trị mặc định là ""

Đặt tên mô-đun cho mục tiêu này. Theo mặc định, tên mô-đun là đường dẫn mục tiêu với tất cả các ký hiệu đặc biệt được thay thế bằng _, ví dụ: //foo/baz:bar có thể được nhập dưới dạng foo_baz_bar.
non_arc_srcs

Danh sách nhãn; mặc định là []

Danh sách các tệp Objective-C được xử lý để tạo mục tiêu thư viện KHÔNG sử dụng tính năng Đếm tham chiếu tự động (ARC). Các tệp trong thuộc tính này được xử lý tương tự như các tệp trong thuộc tính srcs, nhưng được biên dịch mà không bật ARC.
pch

Nhãn; mặc định là None

Tệp tiêu đề để thêm vào trước mọi tệp nguồn đang được biên dịch (cả arc và non-arc). Bạn không nên sử dụng tệp pch trong tệp BUILD và nên coi đây là tệp không dùng nữa. Vì các tệp pch không thực sự được biên dịch trước nên đây không phải là một cách tăng tốc độ xây dựng mà chỉ là một phần phụ thuộc toàn cầu. Từ góc độ hiệu quả của bản dựng, bạn thực sự nên đưa những gì bạn cần trực tiếp vào các nguồn của mình ở nơi bạn cần.
sdk_dylibs

Danh sách các chuỗi; mặc định là []

Tên của các thư viện .dylib SDK cần liên kết. Ví dụ: "libz" hoặc "libarchive". "libc++" sẽ tự động được đưa vào nếu tệp nhị phân có bất kỳ nguồn C++ hoặc Objective-C++ nào trong cây phần phụ thuộc của tệp nhị phân đó. Khi liên kết một tệp nhị phân, tất cả các thư viện có tên trong biểu đồ phần phụ thuộc bắc cầu của tệp nhị phân đó đều được sử dụng.
sdk_frameworks

Danh sách các chuỗi; mặc định là []

Tên của các khung SDK cần liên kết (ví dụ: "AddressBook", "QuartzCore").

Khi liên kết một tệp nhị phân cấp cao nhất của Apple, tất cả các khung SDK có trong biểu đồ phần phụ thuộc bắc cầu của tệp nhị phân đó sẽ được liên kết.

sdk_includes

Danh sách các chuỗi; mặc định là []

Danh sách các đường dẫn tìm kiếm #include/#import để thêm vào mục tiêu này và tất cả các mục tiêu phụ thuộc, trong đó mỗi đường dẫn tương ứng với $(SDKROOT)/usr/include.
stamp

Boolean; giá trị mặc định là False

textual_hdrs

Danh sách nhãn; mặc định là []

Danh sách các tệp C, C++, Objective-C và Objective-C++ được đưa vào làm tiêu đề theo các tệp nguồn trong quy tắc này hoặc theo người dùng của thư viện này. Không giống như hdr, những tệp này sẽ không được biên dịch riêng biệt với các nguồn.
weak_sdk_frameworks

Danh sách các chuỗi; mặc định là []

Tên của các khung SDK để liên kết yếu. Ví dụ: "MediaAccessibility". Không giống như các khung SDK được liên kết thường xuyên, các biểu tượng từ các khung được liên kết yếu không gây ra lỗi nếu chúng không có trong thời gian chạy.