toolchains |
List of labels
; optional; nonconfigurable Набор целей, к которым данная цель имеет разрешение на доступ к переменным Make. Эти цели являются либо экземплярами правил, предоставляющих TemplateVariableInfo , либо специальными целями для типов систем сборки, встроенных в Bazel. К ним относятся:
-
@bazel_tools//tools/cpp:current_cc_toolchain
-
@bazel_tools//tools/jdk:current_java_runtime
Обратите внимание, что это отличается от концепции разрешения систем сборки, которая используется реализациями правил для платформенно-зависимой конфигурации. Вы не можете использовать этот атрибут для определения того, какие конкретные cc_toolchain или java_toolchain будет использовать цель. |
visibility |
List of labels
; optional;
default default_visibility from
package if specified, or //visibility:private
otherwise; nonconfigurable Атрибут visibility для цели контролирует, может ли эта цель использоваться в других пакетах. См. документацию по видимости. |
Атрибуты, общие для всех правил тестирования (*_test)
В этом разделе описаны атрибуты, общие для всех правил тестирования.
| Атрибут | Описание |
args |
List of strings; optional; subject to
$(location) and
"Make variable" substitution, and
Bourne shell tokenization Аргументы командной строки, которые Bazel передаёт целевому объекту при его выполнении с bazel test.
Эти аргументы передаются перед любыми значениями --test_arg , указанными в командной строке bazel test. |
env |
Dictionary of strings; optional; values are subject to
$(location) and
"Make variable" substitution Указывает дополнительные переменные среды, которые нужно установить при выполнении теста с помощью bazel test. Этот атрибут применяется только к правилам нативных правил, таким как cc_test, py_test, и sh_test. Он не применяется к правилам тестирования, определённым в Starlark. Для собственных правил Starlark можно добавить атрибут «env» и использовать его для заполнения поставщика TestEnvironment. |
env_inherit |
List of strings; optional Указывает дополнительные переменные среды, которые нужно унаследовать из внешней среды при выполнении теста с помощью bazel test. Этот атрибут применяется только к правилам нативных правил, таким как cc_test, py_test, и sh_test. Он не применяется к правилам тестирования, определённым в Starlark. |
size |
String "enormous", "large" "medium" or "small",
default is "medium"; optional; nonconfigurable Указывает «тяжесть» цели теста: сколько времени/ресурсов требуется для его выполнения. Тесты единиц считаются «небольшими», интеграционные тесты — «средними», а тесты конечного пользователя — «большими» или «огромными». Bazel использует размер, чтобы определить значение таймаута по умолчанию, которое можно переопределить с помощью атрибута timeout. Время ожидания относится ко всем тестам в цели BUILD, а не к каждому отдельному тесту. При выполнении теста локально значение size дополнительно используется для планирования: Bazel пытается учитывать --local_{ram,cpu}_resources и не перегружать локальную машину, запуская большое количество тяжелых тестов одновременно. Размеры тестов соответствуют следующим значениям таймаутов по умолчанию и предполагаемым пиковым значениям локальных ресурсов: | Размер | ОЗУ (в МБ) | ЦП (в ядрах ЦП) | Таймаут по умолчанию | | небольшой | 20 | 1 | короткий (1 минута) | | средний | 100 | 1 | умеренный (5 минут) | | большой | 300 | 1 | длинный (15 минут) | | огромный | 800 | 1 | вечный (60 минут) | Переменная среды
TEST_SIZE
будет установлена в значение этого атрибута при запуске теста. |
timeout |
String "short", "moderate", "long", "eternal"
(with the default derived from the test's size attribute); nonconfigurable Время, в течение которого ожидается выполнение теста перед возвратом. В то время как атрибут размера теста контролирует оценку ресурсов, таймаут теста может быть установлен независимо. Если не указано явно, таймаут основан на размере теста. Таймаут теста может быть переопределён с помощью флага --test_timeout, например, для запуска в определённых условиях, которые известны как медленные. Значения таймаута тестов соответствуют следующим временным периодам: | Значение таймаута | Временной период | | короткий | 1 минута | | умеренный | 5 минут | | длинный | 15 минут | | вечный | 60 минут | Для других значений, помимо указанных выше, таймаут теста можно переопределить с помощью флага Bazel --test_timeout, например, для ручного запуска в условиях, которые известны как медленные. Значения --test_timeout указаны в секундах. Например, --test_timeout=120 установит таймаут теста на две минуты. Переменная среды
TEST_TIMEOUT
будет установлена в таймаут теста (в секундах) при запуске теста. |
flaky |
Boolean; optional; default False; nonconfigurable Помечает тест как ненадёжный. Если установлено, выполняет тест до трёх раз, помечая его как неисправный только если он неисправен каждый раз. По умолчанию этот атрибут установлен в False, и тест выполняется только один раз. Обратите внимание, что использование этого атрибута обычно не рекомендуется — тесты должны проходить надёжно, когда выполняются их утверждения. |
shard_count |
Non-negative integer less than or equal to 50; optional Указывает количество параллельных фрагментов для запуска теста. Это значение переопределит любые эвристики, используемые для определения количества параллельных фрагментов для запуска теста. Обратите внимание, что для некоторых правил тестов этот параметр может быть необходим для включения фрагментации. Также см. --test_sharding_strategy. Если фрагментация тестов включена, переменная среды
TEST_TOTAL_SHARDS
будет установлена в это значение при запуске теста. Для фрагментации требуется, чтобы инструмент запуска тестов поддерживал протокол фрагментации тестов. Если он не поддерживает, то, скорее всего, он запустит каждый тест в каждом фрагменте, что нежелательно. См. Фрагментацию тестов в справочнике по тестам для получения подробной информации о фрагментации. |
local |
Boolean; default False; nonconfigurable Принудительно выполняет тест локально без песочницы. Установка этого значения в True эквивалентна предоставлению тега «локальный» (tags=["local"]). |
Атрибуты, общие для всех правил бинарных правил (*_binary)
В этом разделе описаны атрибуты, общие для всех правил бинарных правил.
| Атрибут | Описание |
args |
List of strings; optional; subject to
$(location) and
"Make variable" substitution, and
Bourne shell tokenization;
nonconfigurable Аргументы командной строки, которые Bazel передаёт целевому объекту при его выполнении с помощью команды run или в качестве теста. Эти аргументы передаются до тех, которые указаны в командной строке bazel run или bazel test. ПРИМЕЧАНИЕ: Аргументы не передаются при запуске целевого объекта вне Bazel (например, при ручном выполнении бинарного файла в bazel-bin/). |
env |
Dictionary of strings; optional; values are subject to
$(location) and
"Make variable" substitution Указывает дополнительные переменные среды, которые нужно установить при выполнении целевого объекта с помощью bazel run. Этот атрибут применяется только к правилам нативных правил, таким как cc_binary, py_binary, и sh_binary. Он не применяется к правилам исполняемых файлов, определённым в Starlark. ПРИМЕЧАНИЕ: Переменные среды не устанавливаются при запуске целевого объекта вне Bazel (например, при ручном выполнении бинарного файла в bazel-bin/). |
output_licenses |
List of strings; optional Лицензии выходных файлов, созданных этим бинарным файлом. Это часть устаревшего API лицензирования, который Bazel больше не использует. Не используйте это. |
Настраиваемые атрибуты
Большинство атрибутов являются «настраиваемыми», что означает, что их значения могут изменяться при построении целевого объекта различными способами. В частности, настраиваемые атрибуты могут изменяться на основе флагов, передаваемых в командную строку Bazel, или того, какая зависимость ниже по уровню запрашивает целевой объект. Это можно использовать, например, для настройки целевого объекта для нескольких платформ или режимов компиляции.
Следующий пример объявляет различные источники для различных архитектур целевых объектов. Запуск bazel build :multiplatform_lib --cpu x86 построит целевой объект, используя x86_impl.cc, в то время как замена x86_impl.cc вместо этого заставит его использовать arm_impl.cc.
cc_library(
name = "multiplatform_lib",
srcs = select({
":x86_mode": ["x86_impl.cc"],
":arm_mode": ["arm_impl.cc"]
})
)
config_setting(
name = "x86_mode",
values = { "cpu": "x86" }
)
config_setting(
name = "arm_mode",
values = { "cpu": "arm" }
)
Функция select() выбирает среди различных альтернативных значений для настраиваемого атрибута в зависимости от того, какие критерии config_setting или constraint_value удовлетворяет конфигурация целевого объекта.
Bazel оценивает настраиваемые атрибуты после обработки макросов и перед обработкой правил (технически, между фазами загрузки и анализа). Любая обработка до оценки select() не знает, какой ветви выбирает select(). Например, макросы не могут изменять своё поведение в зависимости от выбранной ветви, а bazel query может делать только консервативные предположения о настраиваемых зависимостях целевого объекта. См. эту часто задаваемый вопрос для получения более подробной информации об использовании select() с правилами и макросами.
Атрибуты, помеченные как nonconfigurable в их документации, не могут использовать эту функцию. Обычно атрибут не настраивается, потому что Bazel внутренне должен знать его значение, прежде чем сможет определить, как разрешить select().
См. Настраиваемые атрибуты сборки для получения подробного обзора.
Неявные целевые выходные данные
Неявные выходные данные в C++ устарели. Пожалуйста, воздерживайтесь от их использования в других языках, где это возможно. У нас пока нет пути устаревания, но они также будут в конечном итоге устареть.