2017-04-08 8 views
2

Rustを使用してOSタイプを検出するにはどうすればよいですか? OS固有のデフォルトパスを指定する必要があります。条件付きコンパイルを使用する必要がありますか?例えばRustのプラットフォームを検出する

#[cfg(target_os = "macos")] 
static DEFAULT_PATH: &str = "path2"; 
#[cfg(target_os = "linux")] 
static DEFAULT_PATH: &str = "path0"; 
#[cfg(target_os = "windows")] 
static DEFAULT_PATH: &str = "path1"; 
+6

"*条件付きコンパイルを使用しますか?" - はい。 –

+2

あなたが必要とするデフォルトのパスの種類に応じて、既にあなたが '#[cfg]'をあなた自身で書く必要がないので、すでにクレートがあるかもしれません。 – kennytm

答えて

3

EDIT:

この答えを書いているので、os_typeクレートの作者は、WindowsのようなOSを公開されている機能を撤回したようです。条件付きのコンパイルがおそらく最善の策でしょう - os_typeは、今度は、lib.rsから判断すると、Linuxディストリビューションを検出するようです。


ORIGINAL ANSWER:

あなたはいつもos_typeクレートを使用することができます。正面ページから:

extern crate os_type; 

fn foo() { 
     match os_type::current_platform() { 
     os_type::OSType::OSX => /*Do something here*/, 
     _ => None 
    } 
} 
1

cfg!シンタックス拡張子を使用することもできます。

if cfg!(windows) { 
    println!("this is windows"); 
} else if cfg!(unix) { 
    println!("this is unix"); 
} 
+0

これは、Linux、BSD、OSXを同じプラットフォームとして扱います。時にはこれがあなたの望むものですが、必ずしもそうではありません。 –

関連する問題