我在使用 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/