Sto scrivendo una libreria multipiattaforma che ha dipendenze specifiche della piattaforma, una per piattaforme unix-like e una per windows. Queste casse si compilano solo su piattaforme specifiche, quindi non posso semplicemente aggiungerle tutte sotto dipendenze normalmente.Come avere dipendenze diverse a seconda della famiglia OS
Nel codice di ruggine vero io uso cfg
attributi, come #[cfg(unix)]
per compilare certo codice per alcune piattaforme, e voglio fare qualcosa di simile nel Cargo.toml, o in uno script di build, per le dipendenze. Attualmente, sto usando triplette target come queste:
[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 = "*"
Tuttavia, questo elenco è tutt'altro che esaustivo. Non mi interessa l'architettura o l'ABI, solo la famiglia OS, e come tale, la lista diventerebbe molto lunga, dovevo corrispondere per ogni singola tripla di tipo unix-like.
Esiste un modo per utilizzare dipendenze specifiche, determinate solo dalla famiglia OS della piattaforma in cui viene eseguito il carico? Qualcosa di simile:
[target.family.unix.dependencies]
abc-sys = "*"
def = "*"
[target.family.windows.dependencies]
abc-win = "*"
si può cambiare la risposta accettata in basso? lo scrittore della risposta attualmente accettata accetta anche – hansaplast