rust - capnpc::compile 不写入文件

标签 rust capnproto

我在使用 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();
}

cargo .toml

...
build = "build.rs"

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

[build-dependencies]
capnpc = "*"

[dependencies]
capnp = "0.5.0"

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

最佳答案

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

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

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

您可能会发现咨询 addressbook example 有帮助。 .

关于rust - capnpc::compile 不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392841/

相关文章:

rust - 闭包: expected a closure that implements the `Fn` trait,内部的Arc <Mutex <T >>,但此闭包仅实现 `FnOnce`

Rust 生命周期,数据流入其他引用

c++ - Cap'n Proto - 将结构反序列化/序列化为 std::string 以存储在 LevelDB 中

rust - 是否可以在工作区中运行 `cargo watch`?

compiler-errors - 如何编译以下 Rust 代码?

websocket - Cap'n Proto 中如何区分多种消息类型?

c++ - 将 3rd 方异步 API 与 Cap'n Proto RPC 集成的好方法是什么?

c++ - 船长原型(prototype) : Piecewise write large message to disk

rust - 将 Result 上的迭代器转换为 Result<Vec<_>, _>

json - Flatbuffer 与 CBOR