Spec-Zone.ru › Bazel 6.1

Правила Objective-C

Правила

  • j2objc_library
  • objc_import
  • objc_library
  • доступные_xcodes
  • xcode_config
  • xcode_version

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 можно указать с помощью флага сборки --j2objc_translation_flags в командной строке.

Обратите внимание, что переведённые файлы, включённые в целевой j2objc_library, будут скомпилированы с использованием стандартной конфигурации компиляции, той же, что и для исходных кодов правила objc_library без указанных в атрибутах опций компиляции.

Кроме того, сгенерированный код дедублицируется на уровне целевого объекта, а не на уровне исходного кода. Если у вас есть две разные Java-цели, включающие одни и те же Java-исходные файлы, вы можете увидеть ошибку дублирования символов во время линковки. Правильный способ решения этой проблемы — перемещение общих Java-исходных файлов в отдельную общую цель, от которой можно зависеть.

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список целей j2objc_library, java_library, java_import и java_proto_library, содержащих Java-файлы, которые нужно транслировать в Objective-C.

Все java_library и java_import цели, которые могут быть достигнуты транзитивно через exports, deps и runtime_deps, будут транслированы и скомпилированы. В настоящее время нет поддержки файлов, сгенерированных с помощью обработки Java-аннотаций или java_import целей без указанных srcjar.

Трансляция J2ObjC работает по-разному в зависимости от типа исходных Java-файлов, включённых в транзитивное замыкание. Для каждого файла .java, включённого в srcs из java_library, будет сгенерирован соответствующий файл .h и .m. Для каждого JAR-файла, включённого в srcs из java_library или srcjar из java_import, будет сгенерирован соответствующий файл .h и .m с кодом этого JAR-файла.

Пользователи могут импортировать сгенерированные J2ObjC заголовочные файлы в свой код. Пути импорта для этих файлов — это пути к корню исходных Java-артефактов. Например, //some/package/foo.java имеет путь импорта some/package/foo.h, а //some/package/bar.srcjar — some/package/bar.h.

Если правила proto_library находятся в транзитивном замыкании этого правила, проты J2ObjC также будут сгенерированы, скомпилированы и связаны на уровне бинарного файла. Для прото //some/proto/foo.proto, пользователи могут ссылаться на сгенерированный код, используя путь импорта some/proto/foo.j2objc.pb.h.

entry_classes

List of strings; optional

Список Java-классов, чьи переведённые аналоги Objective-C будут непосредственно использоваться кодом Objective-C пользователя. Этот атрибут обязателен, если флаг --j2objc_dead_code_removal включён. Java-классы должны быть указаны в своих канонических именах, как определено в спецификации Java-языка. Когда указан флаг --j2objc_dead_code_removal, список входных классов будет собран транзитивно и использован в качестве входных точек для анализа неиспользуемого кода. Неиспользуемые классы затем будут удалены из конечного пакета приложения ObjC.
jre_deps

List of labels; optional

Список дополнительных библиотек эмуляции JRE, необходимых для всего Java-кода, переведённого этим j2objc_library правилом. По умолчанию связывается только основная функциональность 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

Name; required

Уникальное имя для этой цели.

hdrs

List of labels; optional

Список файлов заголовков C, C++, Objective-C и Objective-C++, публикуемых этой библиотекой для включения источниками в зависимых правилах.

Эти заголовки описывают публичный интерфейс библиотеки и будут доступны для включения источниками в этом правиле или в зависимых правилах. Заголовки, которые не должны включаться клиентом этой библиотеки, следует перечислять в атрибуте srcs.

Эти файлы будут скомпилированы отдельно от исходного кода, если модули включены.

alwayslink

Boolean; optional; default is False

Если 1, любой пакет или двоичный файл, зависящий (прямо или косвенно) от этой библиотеки, будет линковаться со всеми объектными файлами, перечисленными в srcs и non_arc_srcs, даже если некоторые из них не содержат символы, на которые ссылается двоичный файл. Это полезно, если ваш код не вызывается явно кодом в двоичном файле, например, если ваш код регистрируется для получения некоторого обратного вызова, предоставляемого некоторой службой.
archives

List of labels; required

Список файлов .a для Objective-C-целей, которые зависят от этой цели.
includes

List of strings; optional

Список #include/#import путей поиска для добавления к этой цели и всем зависящим целям. Это необходимо для поддержки сторонних и открытых библиотек, которые не указывают полный путь рабочего пространства в своих объявлениях #import/#include.

Пути интерпретируются относительно каталога пакета, а корни genfiles и bin (например, blaze-genfiles/pkg/includedir и blaze-out/pkg/includedir) также включаются, помимо фактического корня клиента.

В отличие от COPTS, эти флаги добавляются для этого правила и каждого правила, от которого оно зависит. (Примечание: не правила, от которых оно зависит!) Будьте очень осторожны, так как это может иметь серьёзные последствия. В случае сомнений добавьте флаги «-iquote» в COPTS вместо этого.

sdk_dylibs

List of strings; optional

Имена библиотек SDK .dylib для линковки. Например, "libz" или "libarchive". "libc++" включается автоматически, если двоичный файл имеет какие-либо C++ или Objective-C++ исходные файлы в своей древовидной зависимости. При линковке двоичного файла используются все библиотеки, перечисленные в графе транзитивных зависимостей этого двоичного файла.
sdk_frameworks

List of strings; optional

Имена фреймворков SDK для линковки (например, "AddressBook", "QuartzCore"). "UIKit" и "Foundation" всегда включаются при построении для платформ iOS, tvOS и watchOS. Для macOS всегда включается только "Foundation".

При линковке двоичного файла Apple верхнего уровня линковаются все фреймворки SDK, перечисленные в графе транзитивных зависимостей этого двоичного файла.

sdk_includes

List of strings; optional

Список #include/#import путей поиска для добавления к этой цели и всем зависящим целям, где каждый путь относительный к $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

Список файлов C, C++, Objective-C и Objective-C++, которые включаются как заголовки исходными файлами в этом правиле или пользователями этой библиотеки. В отличие от hdrs, эти файлы не будут скомпилированы отдельно от исходных кодов.
weak_sdk_frameworks

List of strings; optional

Имена фреймворков 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, 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

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список целей, связанных вместе для создания конечного набора.
srcs

List of labels; optional

Список файлов исходного кода C, C++, Objective-C и Objective-C++, файлов заголовков и/или файлов исходного кода ассемблера (`.s`, `.S` или `.asm`), которые обрабатываются для создания целевого объекта библиотеки. Это ваши отслеживаемые файлы плюс любые сгенерированные файлы. Файлы исходного кода компилируются в файлы .o с помощью Clang. Файлы заголовков могут быть включены/импортированы любым файлом исходного кода или заголовка в атрибуте srcs этой цели, но не заголовками в атрибуте hdrs или любыми зависимыми от этой правила целями. Кроме того, могут быть указаны предварительно скомпилированные файлы .o. Обратите внимание на согласованность архитектуры предоставленных файлов .o и архитектуры сборки, чтобы избежать ошибок линкера из-за отсутствия символов.
hdrs

List of labels; optional

Список файлов заголовков C, C++, Objective-C и Objective-C++, опубликованных этой библиотекой для включения в исходные файлы зависимых правил.

Эти заголовки описывают публичный интерфейс библиотеки и будут доступны для включения исходными файлами в этом правиле или в зависимых правилах. Заголовки, которые не должны включаться клиентом этой библиотеки, должны быть перечислены в атрибуте srcs вместо этого.

Эти заголовки будут компилироваться отдельно от исходного кода, если модули включены.

alwayslink

Boolean; optional; default is False

Если 1, любой набор или двоичный файл, зависящий (прямо или косвенно) от этой библиотеки, будет подключать все файлы-объекты для файлов, перечисленных в srcs и non_arc_srcs, даже если некоторые из них не содержат символов, на которые ссылается двоичный файл. Это полезно, если ваш код не явно вызывается кодом в двоичном файле, например, если ваш код регистрируется для получения обратного вызова, предоставленного какой-либо службой.
copts

List of strings; optional

Дополнительные флаги для компилятора. Подлежат замене переменных make и токенизации оболочки Bourne. Эти флаги будут применяться только к этой цели, а не к целям, от которых она зависит, или к целям, которые зависят от неё.

Обратите внимание, что для сгенерированного проекта Xcode пути к каталогам, указанные с помощью флагов "-I" в copts, разбираются, если это относительные пути, добавляются к ним "$(WORKSPACE_ROOT)/", и добавляются в пути поиска заголовков для соответствующей цели Xcode.

defines

List of strings; optional

Дополнительные флаги -D для компилятора. Они должны иметь вид KEY=VALUE или просто KEY, и передаются не только компилятору для этой цели (как copts), но и всем objc_ зависимым целям этой цели. Подлежат замене переменных make и токенизации оболочки Bourne.
enable_modules

Boolean; optional; default is False

Включает поддержку модулей clang (через -fmodules). Установка этого значения в 1 позволит вам использовать @import системных заголовков и других целей: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

Список #include/#import путей поиска для добавления к этой цели и всем зависимым целям. Это для поддержки сторонних и открытых библиотек, которые не указывают весь путь рабочего пространства в своих #import/#include утверждениях.

Пути интерпретируются относительно каталога пакета, и корни genfiles и bin (например, blaze-genfiles/pkg/includedir и blaze-out/pkg/includedir) включаются в дополнение к фактическому корню клиента.

В отличие от COPTS, эти флаги добавляются для этого правила и для каждого правила, которое зависит от него. (Примечание: не правила, от которых оно зависит!) Будьте очень внимательны, так как это может иметь далеко идущие последствия. В случае сомнений, добавьте флаги "-iquote" в COPTS вместо этого.

linkopts

List of strings; optional

Дополнительные флаги для линкера.
module_map

Label; optional

Настраиваемый карта модулей Clang для этой цели. Использование настраиваемой карты модулей не рекомендуется. Большинство пользователей должны использовать карты модулей, сгенерированные Bazel. Если указано, Bazel не будет генерировать карту модулей для этой цели, но передаст предоставленную карту модулей компилятору.
module_name

String; optional

Устанавливает имя модуля для этой цели. По умолчанию имя модуля — это путь к цели со всеми специальными символами, заменёнными на «_», например, //foo/baz:bar может быть импортирован как foo_baz_bar.
non_arc_srcs

List of labels; optional

Список файлов Objective-C, которые обрабатываются для создания целевого объекта библиотеки, НЕ использующего ARC. Файлы в этом атрибуте обрабатываются очень похоже на файлы в атрибуте srcs, но компилируются без включения ARC.
pch

Label; optional

Файл заголовка, который добавляется перед каждым компилируемым исходным файлом (как с ARC, так и без него). Использование файлов pch в файлах BUILD решительно не рекомендуется, и это следует считать устаревшим. Поскольку файлы pch фактически не предварительно компилируются, это не повышает скорость сборки, а просто добавляет глобальную зависимость. С точки зрения эффективности сборки вы на самом деле лучше включите необходимые компоненты непосредственно в исходные файлы, там, где они нужны.
runtime_deps

List of labels; optional

Список целевых фреймворков, которые подгружаются поздно во время выполнения. Они включены в пакет приложения, но не подключаются во время сборки.
sdk_dylibs

List of strings; optional

Имена SDK .dylib библиотек для подключения. Например, «libz» или «libarchive». «libc++» включается автоматически, если двоичный файл имеет какие-либо исходные файлы C++ или Objective-C++ в дереве зависимостей. При подключении двоичного файла используются все библиотеки, указанные в графе зависимостей транзитивного двоичного файла.
sdk_frameworks

List of strings; optional

Имена SDK фреймворков для подключения (например, «AddressBook», «QuartzCore»). «UIKit» и «Foundation» всегда включаются при построении для платформ iOS, tvOS и watchOS. Для macOS всегда включается только «Foundation».

При подключении верхнего уровня Apple двоичного файла, все SDK фреймворки, указанные в графе транзитивных зависимостей этого двоичного файла, подключаются.

sdk_includes

List of strings; optional

Список #include/#import путей поиска для добавления к этой цели и всем зависимым целям, где каждый путь является относительным к $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

Список файлов C, C++, Objective-C и Objective-C++, которые включаются как заголовки файлами исходного кода в этом правиле или пользователями этой библиотеки. В отличие от hdrs, они не будут компилироваться отдельно от исходных файлов.
weak_sdk_frameworks

List of strings; optional

Имена SDK фреймворков для слабого подключения. Например, «MediaAccessibility». В отличие от обычно подключаемых SDK фреймворков, символы из слабо подключенных фреймворков не вызывают ошибки, если они отсутствуют во время выполнения.

доступные_xcodes

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

Две цели этого правила могут зависеть от экземпляра правила xcode_config для указания удалённых и локально доступных версий Xcode. Это позволяет выбрать официальную версию Xcode из доступных версий.

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

default

Label; required; nonconfigurable

Версия Xcode по умолчанию для этой платформы.
versions

List of labels; optional; nonconfigurable

Доступные версии Xcode на этой платформе.

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

Name; required

Уникальное имя для этой цели.

default

Label; optional; nonconfigurable

По умолчанию официальная версия Xcode для использования. Версия, указанная предоставленной целью xcode_version, используется, если не указан флаг сборки xcode_version. Это требуется, если установлены какие-либо versions. Это может не устанавливаться, если установлен remote_versions или local_versions.
local_versions

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

Принятые xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set.

xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

Представляет одну официальную версию Xcode с допустимыми псевдонимами для этой версии Xcode. См. правило xcode_config.

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этого целевого приложения.

default_ios_sdk_version

String; optional; nonconfigurable

Версия iOS SDK, используемая по умолчанию при использовании этой версии Xcode. Значение, указанное здесь, будет переопределено флагом сборки ios_sdk_version.
default_macos_sdk_version

String; optional; nonconfigurable

Версия macOS SDK, используемая по умолчанию при использовании этой версии Xcode. Значение, указанное здесь, будет переопределено флагом сборки macos_sdk_version.
default_tvos_sdk_version

String; optional; nonconfigurable

Версия tvOS SDK, используемая по умолчанию при использовании этой версии Xcode. Значение, указанное здесь, будет переопределено флагом сборки tvos_sdk_version.
default_watchos_sdk_version

String; optional; nonconfigurable

Версия watchOS SDK, используемая по умолчанию при использовании этой версии Xcode. Значение, указанное здесь, будет переопределено флагом сборки watchos_sdk_version.
version

String; required; nonconfigurable

Официальное номерной обозначение версии Xcode.

За исключением случаев, оговоренных отдельно, содержимое этой страницы лицензировано по лицензии Creative Commons Attribution 4.0, а примеры кода лицензированы по лицензии Apache 2.0. Подробности см. в Правилах сайта Google Developers. Java — зарегистрированный товарный знак Oracle и/или её дочерних компаний.

Последнее обновление 2023-03-15 UTC.

Licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License.
https://bazel.build/versions/6.1.0/reference/be/objective-c

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API