Spec-Zone.ru › Bazel 8.0

Правила Objective-C

Правила

  • objc_import
  • objc_library

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. Оно также позволяет экспортировать заголовки и ресурсы, используя те же атрибуты, что и objc_library.

Аргументы

Атрибуты
name

Имя; обязательно

Уникальное имя для этого целевого объекта.

deps

Список меток; по умолчанию []

Список целевых объектов, от которых зависит этот целевой объект.
hdrs

Список меток; по умолчанию []

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

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

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

alwayslink

Булево значение; по умолчанию False

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

Список меток; обязательно

Список файлов .a, предоставляемых объектным целевым объектам, которые зависят от этого целевого объекта.
includes

Список строк; по умолчанию []

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

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

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

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

Список меток; по умолчанию []

Список файлов C, C++, Objective-C и Objective-C++, которые включаются в качестве заголовков исходными файлами в этом правиле или пользователями этой библиотеки. В отличие от 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`), которые обрабатываются для создания целевой библиотеки. Это ваши файлы, занесенные в систему контроля версий, а также любые сгенерированные файлы. Файлы исходного кода компилируются в файлы .o с помощью Clang. Файлы заголовков могут включаться/импортироваться любым файлом исходного кода или файлом заголовка в атрибуте srcs этой цели, но не файлами заголовков в атрибуте hdrs или любыми целями, которые зависят от этой правила. Кроме того, можно указать предварительно скомпилированные файлы .o как srcs. Убедитесь в согласовании архитектуры предоставленных файлов .o и архитектуры сборки, чтобы избежать ошибок линковщика, связанных с отсутствием символов.
hdrs

Список меток; значение по умолчанию []

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

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

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

alwayslink

Булево; значение по умолчанию False

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

Список строк; значение по умолчанию []

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

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

defines

Список строк; значение по умолчанию []

Дополнительные флаги -D для компилятора. Они должны быть в формате KEY=VALUE или просто KEY, и передаются не только компилятору для этой цели (как и copts), но и всем objc_ зависимым целям этой цели. Подлежат замене "переменных Makefile" и токенизации оболочки 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/includedir и blaze-out/pkg/includedir) включаются помимо фактического корня клиента.

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

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, так и без). Использование файлов pch в файлах BUILD активного не рекомендуется, и это следует считать устаревшим. Поскольку файлы 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

Список меток; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

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

Последнее обновление 2024-12-10 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/8.0.0/reference/be/objective-c

Spec-Zone.ru

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