Сборочный скрипт может получить произвольные метаданные зависимости

31.12.2025

Сборочный скрипт крейта может получать произвольные метаданные зависимостей, объявленные в манифесте. Раньше набор предопределённых полей был ограничен.

Как это работало раньше

Крейт мог объявить в манифесте специальное поле, и его значение становилось доступным сборочному скрипту. Механизм был один, и поля жёстко заданы стандартной библиотекой: путь к библиотеке, флаги сборки, версия.

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

Что добавлено

Инструкция с произвольным именем и значением в манифесте. Скрипт объявляет, что интересуется, и получает значение в своём окружении под именем, составленным из названия зависимости и имени поля.

То есть имя поля больше не ограничено списком — можно завести своё и передавать через него что угодно: версию системы сборки, путь к инструменту, идентификатор целевой платформы.

Положение дел

Пока за флагом нестабильной возможности.

Оригинал

Adds an unstable -Zany-build-script-metadata feature. Adds CARGO_DEP_<name>_<key> env vars as described in rust-lang/cargo#3544 when -Zany-build-script-metadata is passed.

Упоминаний: 1 · Просмотров: 2