是否可以有条件地将货物包含在工作空间中,或者告诉Cargo在包的Cargo.toml文件中忽略它们?
假设我有一个带有包的工作空间,应该仅在适当的平台上编译。
[workspace]
members = [
"main",
"lib_common",
"lib_linux_only",
"lib_macos_only",
]
所有的lib包都是动态库,因此有些包在某些平台上无法构建(因为主可执行文件会在运行时知道加载哪个而不是加载哪个)。但这应该是“静默”的。
在特定于平台的模块中,我有一个条件编译检查,例如
#[cfg(not(target_os = "linux"))]
compile_error!("This feature requires Linux");
那意味着我无法运行主可执行文件,因为平台特定的软件包无法构建。在这种情况下,我必须注释掉在 Mac 上的 Linux 软件包和在 Linux 上的 Mac 软件包。