capnpc::compile не пишет файлы
У меня проблемы с работой с ящиком capnpc. Я использую Arch Linux, установил capnp из AUR и скомпилировал capnpc-rust из проекта github и поместил его в /usr/local/bin
, Я могу легко скомпилировать файл.capnp с помощью команды
capnp compile -orust --src-prefix=capnp capnp/message.capnp
Я попытался клонировать проект capnpc и скомпилировать тестовый файл.capnp в тестовом каталоге, но это тоже не сработало. Я не получаю никаких ошибок (тогда как раньше я получал "Файл не найден"), поэтому кажется, что capnpc работает, но я нигде не могу найти файлы.
build.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.
1 ответ
Когда вы вызываете capnpc::compile из скрипта сборки Cargo, сгенерированный код попадает в подкаталог target/, который можно найти во время основной компиляции через OUT_DIR
переменная окружения. Эта стратегия описана в грузовой документации.
Вам не нужно устанавливать двоичный файл capnpc-rust в /usr/local/bin или где-либо еще, чтобы это работало.
Ваши файлы build.rs и Cargo.toml выглядят хорошо для меня.
Возможно, вам будет полезно ознакомиться с примером адресной книги.