2016-09-27 21 views
1

サブディレクトリにローカル・クレートを使用するこの小さなライブラリがあれば、フィーチャーが使用可能になっているかどうかに応じて、依存関係の1つをオプションにする方法はありますか?ローカル依存関係をカーゴの機能に依存する方法は?

[package] 
name = "image_load" 
description = "Small wrapper for image reading API's." 
version = "0.1.0" 

[features] 

default = ["use_png"] 

[dependencies] 

[dependencies.image_load_ppm] 
path = "ppm" 

# How to make this build _only_ when 'use_png' feature is enabled? 
[dependencies.image_load_png] 
path = "png" 

私はthe documentationを読みながら、これはオプション外部依存関係を持ってする方法を示しています。上記の例では、ビルドしたいローカルサブディレクトリを使用しているかどうかは、機能に基づいています。

use_png機能が有効になっている場合は、image_load_pngのみビルドを行うことができます。

+1

[documentation](http://doc.crates.io/manifest.html#the-features-section)を参照してください。 – squiguy

+0

私はこのページを読んだが、これの例は見なかった。 – ideasman42

+0

コメントの下にあります**#すべてのオプションの依存関係のリスト**。 – Shepmaster

答えて

4

これは、次を追加することによって行うことができます。

[package] 
name = "image_load" 
version = "0.1.0" 
description = "Small wrapper for image reading API's." 

[features] 

default = ["use_png"] 
use_png = ["image_load_png"] # <-- new line 

[dependencies] 

[dependencies.image_load_ppm] 
path = "ppm" 

[dependencies.image_load_png] 
path = "png" 
optional = true # <-- new line 

クレートを使用すると、オプションのことができます。

例えば:機能など、任意の二重としてマーク

#[cfg(feature = "use_png")] // <-- new line 
extern crate image_load_png; 
0

依存関係。ただし、別の名前の機能を使用する場合は、define it manuallyにする必要があります。

たとえば、image_load_pngをオプションとしてマークすると、image_load_pngは、image_load_png機能が有効になっている場合にのみコンパイルされます。 Rustコードで有効になっている機能が他の機能と同じようにテストできます。

[dependencies.image_load_png] 
path = "png" 
optional = true 
関連する問題