2016-09-27 48 views
1

我有src/bin/linux-only.rs它只能在Linux上工作(例如只存在于Linux上的libc绑定)。我想排除在OS X上构建该文件。如何从OS X上构建文件?

我开始在linux-only.rs的每个块上放置#[cfg(target_os = "linux")],但是这会让源代码超出任何原因。

有没有更好的方法来做到这一点?

回答

3

写在文件顶部的#![cfg(target_os = "linux")](注意感叹号)将适用于整个文件(只要它包含一个模块),而不仅仅是下一个块(项目)。来源:Rust reference

编辑:如果您可以将该文件移动到自己的箱子中,则可以利用Cargo的platform-specific dependencies

+0

当然!现在很明显。有了惊叹号,它适用于整个“块”,因为它位于文件顶部,适用于整个模块。谢谢。 – hansaplast

+0

虽然有一个问题仍然存在:货物生成现在抱怨'错误:未找到主要功能'。我将如何避免这种情况? – hansaplast

+0

@PhilippKeller:你可以提供'#[cfg(not(target_os =“linux”))] fn main(){}',但是我担心在这个模块中注释*是混乱的。你确定没有办法简单地告诉货主只考虑Linux上的文件吗? –