相关疑难解决方法(0)

如何使用`cfg`和Cargo进行条件编译?

我想cfg用Cargo 有条件地编译我的源代码,在谷歌搜索一段时间后,似乎解决方案是使用cargo --features.

http://doc.crates.io/manifest.html

我尝试添加一些

#[cfg(feature = "foo")]
Run Code Online (Sandbox Code Playgroud)

在源代码和

cargo build --features foo
Run Code Online (Sandbox Code Playgroud)

,但它说

Package `xxx v0.0.1 (file:///C:/yyy/xxx)` does not have these features: `foo`
Run Code Online (Sandbox Code Playgroud)

我怎样才能让货物识别出这些特征?我必须添加一些东西Cargo.toml吗?

这里的版本rustccargo我使用:

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)
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

20
推荐指数
3
解决办法
9732
查看次数

如何在Rust中使用条件编译宏的示例

我已经遵循了不少文件,并试图重用一个例子,但我不能让我的代码工作.

我的Cargo.toml看起来像这样:

[package]
name = "Blahblah"
version = "0.3.0"
authors = ["ergh <derngummit@ahwell.com"]
[dependencies]

[[bin]]
name = "target"
path = "src/main.rs"

[features]
default=["mmap_enabled"]
no_mmap=[]
mmap_enabled=[]
Run Code Online (Sandbox Code Playgroud)

我想根据我传递给cargo build命令的功能配置,使用与mmap不同的缓冲区来本地测试我的代码.我的代码中有这个:

if cfg!(mmap_enabled) {
    println!("mmap_enabled bro!");
    ...
}
if cfg!(no_mmap) {
    println!("now it's not");
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译器没有看到任何一个if语句体中的代码,所以我知道这两个cfg!语句都在评估为false.为什么?

在Rust 0.10中读过条件编译?我知道这不是一个完全重复,因为我正在寻找一个有效的例子.

rust

3
推荐指数
1
解决办法
1184
查看次数

标签 统计

rust ×2

rust-cargo ×1