我有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上的文件嗎? –