如何根据操作系统家族有不同的依赖关系

我正在编写一个跨平台的库,它具有特定于平台的依赖关系,一个用于unix平台,另一个用于windows。 这些箱子只能在特定的平台上编译,所以我不能把它们全部添加到通常的依赖项下。

在实际的防锈代码中,我使用cfg属性,如#[cfg(unix)]来编译某些平台的某些代码,我想在Cargo.toml或构build脚本中为依赖项做类似的事情。 目前,我正在使用这样的目标三元组:

 [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-like目标三倍匹配。

有没有什么方法可以使用特定的依赖关系,仅由操作系统的操作系统平台运行? 就像是:

 [target.family.unix.dependencies] abc-sys = "*" def = "*" [target.family.windows.dependencies] abc-win = "*" 

Solutions Collecting From Web of "如何根据操作系统家族有不同的依赖关系"