Quy tắc Objective-C

Báo cáo sự cố Xem nguồn Hằng đêm · 7,3 · 7.2 · 7.1 · 7 · 6,5

Quy tắc

objc_import

Xem nguồn quy tắc
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)

Quy tắc này đóng gói một thư viện tĩnh đã được biên dịch dưới dạng một Tệp .a. API này cũng cho phép xuất tiêu đề và tài nguyên bằng cùng một do objc_library hỗ trợ.

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; giá trị 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; giá trị 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 phát hành để các nguồn đưa vào các quy tắc phụ thuộc.

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

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

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

Nếu là 1, bất kỳ gói hoặc tệp nhị phân nào phụ thuộc (trực tiếp hoặc gián tiếp) vào giá trị này thư viện sẽ liên kết trong tất cả các tệp đối tượng cho các tệp được liệt kê trong srcsnon_arc_srcs, ngay cả khi một số thuộc tính không chứa được tham chiếu bởi tệp nhị phân. Đ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 Target-C phụ thuộc vào mục tiêu này.
includes

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

Danh sách đườ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. Đ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 bao gồm cả thư mục gốc genfiles và bin (ví dụ: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) ngoài thư mục gốc thực tế của ứng dụng.

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

sdk_dylibs

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

Tên của thư viện SDK .dylib để liên kết. Ví dụ: "libz" hoặc "liblưu trữ". "libc++" được đưa vào tự động 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. 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ụ thuộc bắc cầu của tệp nhị phân đó đều được đã sử dụng.
sdk_frameworks

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

Tên của các khung SDK để 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ả khung SDK được liệt kê trong tệp nhị phân đó biểu đồ phần phụ thuộc bắc cầu được liên kết.

sdk_includes

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

Danh sách #include/#import đường dẫn tìm kiếm để 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 dưới dạng tiêu đề bởi các tệp nguồn trong quy tắc này hoặc bởi người dùng thư viện này. Không giống như hdr, các giá trị này sẽ không được biên dịch riêng biệt với nguồn.
weak_sdk_frameworks

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

Tên của các khung SDK để liên kết yếu. Ví dụ: "MediaAccessibility". Khác với 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 sẽ không gây ra lỗi nếu không xuất hiện trong thời gian chạy.

objc_library

Xem nguồn quy tắc
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)

Quy tắc này tạo 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 duy nhất 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; giá trị mặc định là []

Danh sách nguồn và tiêu đề C, C++, Mục tiêu-C và Mục tiêu-C++ các tệp và/hoặc (.s`, .S` hoặc.asm`) được xử lý để tạo mục tiêu thư viện. Đây là những tệp bạn đã đăng ký, cùng với mọi tệp đã tạo. Các tệp nguồn được biên dịch thành tệp .o bằng Clang. Tệp tiêu đề có thể được thêm/nhập bởi bất kỳ nguồn hoặc tiêu đề nào trong thuộc tính srcs của mục tiêu này, nhưng không phải bởi các tiêu đề trong hdr hoặc bất kỳ mục tiêu nào phụ thuộc về quy tắc này. Ngoài ra, các tệp .o được biên dịch trước có thể được cung cấp dưới dạng src. 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 thiếu lỗi trình liên kết biểu tượng.
hdrs

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

Danh sách các tệp tiêu đề C, C++, Target-C và Target-C++ đã xuất bản bởi thư viện này để được đưa vào bởi các nguồn trong quy tắc độc lập.

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

Các mô-đun này sẽ được biên dịch riêng biệt với nguồn nếu bạn bật các 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 với tất cả tệp đối tượng cho các tệp được liệt kê trong srcsnon_arc_srcs, ngay cả khi một số tệp không chứa ký hiệu nào được tệp nhị phân tham chiếu. Điều này rất hữu ích nếu mã của bạn không được gọi rõ ràng bằng mã trong tệp nhị phân, 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.
copts

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

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

Lưu ý rằng đối với dự án Xcode đã tạo, đường dẫn thư mục được chỉ định bằng "-I" cờ ở copt được phân tích cú pháp, thêm "$(WORKSPACE_ROOT)/" nếu đó là các đường dẫn tương đối và đã 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; giá trị mặc định là []

Các cờ -D bổ sung để truyền đến trình biên dịch. Các nhãn này phải ở định dạng có dạng KEY=VALUE hoặc đơn giản là KEY và không chỉ được truyền cho trình biên dịch cho mục tiêu này (dưới dạng copts ) mà còn cho tất cả những người phụ thuộc objc_ của mục tiêu này. Chịu sự thay thế "Tạo biến"tạo mã thông báo shell Bourne.
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). Đặt giá trị này thành 1 sẽ cho phép bạn @nhập tiêu đề hệ thống và các mục tiêu khác: @nhập UIKit; @nhập đường dẫn_to_package_target;
implementation_deps

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

Danh sách các thư viện khác mà thư viện nhắm đế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ả phần phụ thuộc 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 chuỗi; mặc định là []

Danh sách đườ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. Đ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 này được diễn giải tương ứng với thư mục gói và tệp gen và gốc bin (ví dụ: blaze-genfiles/pkg/includedirblaze-out/pkg/includedir) được đưa vào ngoài gốc của ứng dụng khách thực tế.

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

linkopts

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

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

Nhãn; giá trị 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. Thường gặp nhấ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ẽ chuyển bản đồ mô-đun được cung cấp đến trình biên dịch.
module_name

String; 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 đích 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 Target-C được xử lý để tạo thư viện mục tiêu KHÔNG sử dụng ARC. Các tệp trong thuộc tính này được xử lý rất giống với các tệp trong 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 đầu mọi tệp nguồn đang được biên dịch (cả arc và không phải arc). Bạn không nên sử dụng tệp pch trong tệp BUILD và bạn nên được coi là 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 một cải tiến tốc độ bản dựng và thay vào đó chỉ là một phần phụ thuộc chung. Từ quan điểm về hiệu quả xây dựng, bạn nên đưa những gì cần thiết vào trực tiếp trong nguồn của mình khi cần.
sdk_dylibs

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

Tên của thư viện SDK .dylib để liên kết. Ví dụ: "libz" hoặc "liblưu trữ". "libc++" được đưa vào tự động 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. 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ụ thuộc bắc cầu của tệp nhị phân đó đều được đã sử dụng.
sdk_frameworks

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

Tên của các khung SDK để 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ả khung SDK được liệt kê trong tệp nhị phân đó biểu đồ phần phụ thuộc bắc cầu được liên kết.

sdk_includes

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

Danh sách đườ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++, Khoảnh khắc - C và được đưa vào dưới dạng tiêu đề bởi tệp nguồn trong quy tắc này hoặc bởi người dùng thư viện của bạn. Không giống như hdr, các giá trị này sẽ không được biên dịch riêng biệt với nguồn.
weak_sdk_frameworks

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

Tên khung SDK cần liên kết yếu. Ví dụ: "MediaAccessibility". Khác với khung SDK được liên kết thường xuyên, ký hiệu từ các khung được liên kết yếu sẽ không gây ra lỗi nếu chúng không xuất hiện trong thời gian chạy.