Я создаю Rust crate, который имеет транзитивные зависимости от нескольких *-sys
ящиков, обертывающих нативные библиотеки.Ящики *-sys
используют build.rs
для создания собственных библиотек с помощью cmake, который не поддерживается в моей среде.
У меня уже есть эти собственные библиотеки, предварительно собранные в другом месте моего дерева проекта.Я бы хотел переопределить сценарии сборки , чтобы он не запускался, и вместо этого использовать существующие собственные библиотеки.
Если манифест содержит ключ ссылки, то Cargo поддерживает переопределение сценария сборкиуказано с пользовательской библиотекой.Цель этой функции - полностью запретить запуск соответствующего сценария сборки и вместо этого предоставить метаданные заблаговременно.
Чтобы переопределить сценарий сборки, поместите следующую конфигурацию в любое допустимое расположение конфигурации Cargo.
[target.x86_64-unknown-linux-gnu.foo]
rustc-link-search = ["/path/to/foo"]
rustc-link-lib = ["foo"]
root = "/path/to/foo"
key = "value"
Источник: Справочник по грузам> Сценарии сборки
Мое первоначальное предположение, основанное на этой документации, заключается в том, что мне просто нужно добавить rustc-link-lib
при объявлении зависимости, но это, похоже, не работает.
[package]
# ...
[dependencies]
# ...
harfbuzz-sys = { version = "0.3", rustc-link-lib = ["harfbuzz"] }
# ...
Cargo все еще пытается вызвать build.rs
и завершается неудачей.
Есть ли правильный способ переопределить harfbuzz-sys
build.rs
для всех его переходных иждивенцев в моем проекте?