2

我在使用capnpc crate时遇到了困难。我正在运行 Arch Linux 并从 AUR 安装 capnp 并从 github 项目编译 capnpc-rust 并将其放入/usr/local/bin. 我可以使用命令轻松手动编译 .capnp 文件

capnp compile -orust --src-prefix=capnp capnp/message.capnp

我尝试克隆 capnpc 项目并在测试目录中编译 .capnp 测试文件,但这也不起作用。我没有收到任何错误(而之前我收到“找不到文件”)所以看起来 capnpc 正在工作,但我无法在任何地方找到文件。

构建.rs

extern crate capnpc;
fn main() {
    ::capnpc::compile("capnp", &["capnp/message.capnp"]).unwrap();
}

货运.toml

...
build = "build.rs"

[lib]
name = "rustp2p"
path = "src/lib.rs"

[build-dependencies]
capnpc = "*"

[dependencies]
capnp = "0.5.0"

编辑:.rs 文件构建到 /target/debug/build/.../out。

4

1 回答 1

3

当您从 Cargo 构建脚本调用 capnpc::compile 时,生成的代码将进入 target/ 的子目录,可以在主编译时通过OUT_DIR环境变量找到该子目录。这个策略在Cargo 文档中描述。

您不需要在 /usr/local/bin 或其他任何地方安装 capnpc-rust 二进制文件即可。

您的 build.rs 和 Cargo.toml 文件对我来说看起来不错。

您可能会发现查阅地址簿示例很有帮助。

于 2015-10-29T12:31:16.223 回答