Piszę bibliotekę wieloplatformową, która ma zależne od platformy zależności, jedną dla platform typu unix i jedną dla systemu Windows. Te skrzynie kompilują się tylko na konkretnych platformach, dlatego nie mogę po prostu dodać ich wszystkich w zależnościach.Jak uzyskać różne zależności w zależności od rodziny OS
W rzeczywistych kodach rdzy używam atrybutów cfg
, takich jak #[cfg(unix)]
do kompilowania pewnych kodów dla niektórych platform, i chcę zrobić coś podobnego w Cargo.toml lub w skrypcie kompilacji dla zależności. Obecnie używam takich trojanów docelowych:
[target.i686-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.x86-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.x86_64-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.i686-pc-windows-gnu.dependencies]
crate2 = "*"
[target.x86-pc-windows-gnu.dependencies]
crate2 = "*"
[target.x86_64-pc-windows-gnu.dependencies]
crate2 = "*"
Lista ta jednak nie jest wyczerpująca. Nie dbam o architekturę ani ABI, tylko o rodzinę OS i jako taka lista byłaby bardzo długa, gdybym pasowała do każdego pojedynczego potrójnego celu podobnego do tego, jaki jest.
Czy istnieje sposób korzystania z określonych zależności, określonych tylko przez rodzinę OS platformy ładunek jest uruchamiany? Coś takiego:
[target.family.unix.dependencies]
abc-sys = "*"
def = "*"
[target.family.windows.dependencies]
abc-win = "*"
można zmienić przyjętą odpowiedź poniżej? autor aktualnie zaakceptowanej odpowiedzi również zgadza się z tą odpowiedzią: – hansaplast