Как использовать условную компиляцию с `cfg` и Cargo?
Я хочу условно скомпилировать свой исходный код, используя cfg
с Cargo,
после Googling на некоторое время,
кажется, что решение должно использовать cargo --features
.
http://doc.crates.io/manifest.html
Я попытался добавить несколько
#[cfg(feature = "foo")]
в исходном коде и
cargo build --features foo
но он говорит
Package `xxx v0.0.1 (file:///C:/yyy/xxx)` does not have these features: `foo`
Как я могу позволить грузовику идентифицировать функции? Должен ли я добавить что-то в Cargo.toml
?
Здесь версия rustc
и cargo
Я использую:
C:\>rustc --version
rustc 0.13.0-nightly (42deaa5e4 2014-12-16 17:51:23 +0000)
C:\>cargo --version
cargo 0.0.1-pre-nightly (5af754d 2014-12-18 01:50:48 +0000)
Ответы
Ответ 1
Вам необходимо представить существующие функции в Cargo.toml
.
Я смог условно скомпилировать, выполнив следующее:
-
В Cargo.toml
создайте раздел features
и введите определенное имя функции:
[features]
customfeature = [] # feature has no explicit dependencies
Если вы хотите, чтобы ваша функция имела определенные зависимости, проверьте примеры в документации.
-
В вашем коде используйте #[cfg(feature="customfeature")]
-
Запустите cargo build --features customfeature
Поскольку ваши шаги 2 и 3 кажутся прекрасными, вероятно, возникнет проблема с вашим Cargo.toml
.