Spec-Zone.ru › Bazel 6.3

Правила Objective-C

Правила

  • j2objc_library
  • objc_import
  • objc_library
  • доступные Xcode
  • конфигурация Xcode
  • версия Xcode

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, список входных классов будет собран транзитивно и будет использован в качестве точек входа для выполнения анализа "мертвого кода". Неиспользуемые классы будут удалены из конечного пакета приложения Objective-C.
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, 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

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, любой пакет или двоичный файл, зависящий (прямо или косвенно) от этой библиотеки, будет связывать все файлы .o для файлов, перечисленных в 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;
implementation_deps

List of labels; optional

Список других библиотек, от которых зависит целевой объект библиотеки. В отличие от deps, заголовки и пути включения этих библиотек (и всех их транзитивных зависимостей) используются только для компиляции этой библиотеки, а не библиотек, которые зависят от неё. Библиотеки, указанные в implementation_deps, по-прежнему подключаются к двоичным целям, которые зависят от этой библиотеки.
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, подключаемых в обычном режиме, символы из слабо связанных фреймворков не вызывают ошибки, если они отсутствуют во время выполнения.

Доступные версии Xcode

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

xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

Одна цель этого правила может быть указана в флaге сборки --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

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 для разработчиков. Java — зарегистрированный товарный знак Oracle и/или её аффилированных лиц.

Последнее обновление 2023-07-25 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.3.0/reference/be/objective-c

Spec-Zone.ru

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