我有src/bin/linux-only.rs
它只能在Linux上工作(例如只存在于Linux上的libc绑定)。我想排除在OS X上构建该文件。如何从OS X上构建文件?
我开始在linux-only.rs
的每个块上放置#[cfg(target_os = "linux")]
,但是这会让源代码超出任何原因。
有没有更好的方法来做到这一点?
我有src/bin/linux-only.rs
它只能在Linux上工作(例如只存在于Linux上的libc绑定)。我想排除在OS X上构建该文件。如何从OS X上构建文件?
我开始在linux-only.rs
的每个块上放置#[cfg(target_os = "linux")]
,但是这会让源代码超出任何原因。
有没有更好的方法来做到这一点?
写在文件顶部的#![cfg(target_os = "linux")]
(注意感叹号)将适用于整个文件(只要它包含一个模块),而不仅仅是下一个块(项目)。来源:Rust reference。
编辑:如果您可以将该文件移动到自己的箱子中,则可以利用Cargo的platform-specific dependencies。
它看起来目前是不可能的。我提出了feature request
当然!现在很明显。有了惊叹号,它适用于整个“块”,因为它位于文件顶部,适用于整个模块。谢谢。 – hansaplast
虽然有一个问题仍然存在:货物生成现在抱怨'错误:未找到主要功能'。我将如何避免这种情况? – hansaplast
@PhilippKeller:你可以提供'#[cfg(not(target_os =“linux”))] fn main(){}',但是我担心在这个模块中注释*是混乱的。你确定没有办法简单地告诉货主只考虑Linux上的文件吗? –