プラットフォーム固有の依存関係を持つクロスプラットフォーム ライブラリを作成しています。1 つは UNIX のようなプラットフォーム用、もう 1 つは Windows 用です。これらのクレートは特定のプラットフォームでのみコンパイルされるため、通常、依存関係の下にすべてを追加することはできません。
実際の錆のコードでは、特定のプラットフォーム用に特定のコードをコンパイルするcfg
などの属性を使用します#[cfg(unix)]
。依存関係については、Cargo.toml またはビルド スクリプトで同様のことを行いたいと考えています。現在、次のようなターゲット トリプレットを使用しています。
[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 = "*"
ただし、このリストはすべてを網羅しているわけではありません。私はアーキテクチャや ABI には関心がなく、OS ファミリだけに関心があります。そのため、UNIX のようなターゲット トリプルごとに一致する場合、リストは非常に長くなります。
カーゴが実行されているプラットフォームの OS ファミリによってのみ決定される、特定の依存関係を使用する方法はありますか? 何かのようなもの:
[target.family.unix.dependencies]
abc-sys = "*"
def = "*"
[target.family.windows.dependencies]
abc-win = "*"