2016-09-27 156 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上的文件嗎? –