2016-09-27 15 views
1

私はsrc/bin/linux-only.rsを持っていますが、これはLinuxのみで動作するもの(Linux上にのみ存在するlibcバインディングなど)です。私はそのファイルをOS Xでビルドされないように除外したいと考えています。linux-only.rsのすべてのブロックに#[cfg(target_os = "linux")]を入れ始めましたが、何らかの理由でソースコードが乱雑になっています。OS Xでファイルをビルドから除外するにはどうすればよいですか?

これを行うにはより良い方法がありますか?

答えて

3

ファイルの先頭にある#![cfg(target_os = "linux")](感嘆符に注意)は、次のブロック(項目)だけでなく、ファイル全体(1つのモジュールを含む限り)で機能します。出典:Rust reference

を編集します:そのファイルを自分のクレートに移動できる場合は、Cargoのplatform-specific dependenciesを利用できます。

+0

確かに!今それは明らかです。感嘆符では、全体の "ブロック"に適用されます。ファイルの先頭にあるので、モジュール全体にリンゴが付いています。ありがとう。 – hansaplast

+0

しかし、1つの問題が残っています:貨物ビルドは 'error:main function not found'で今や文句を言います。どのように私はそれを避けるだろうか? – hansaplast

+0

@PhilippKeller:あなたは '#[cfg(not_ target_os =" linux "))] fn main(){}'を提供することができますが、モジュール内の注釈*は面倒です。貨物にLinux上のファイルのみを考慮するように伝える方法がないのは確かですか? –

関連する問題