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