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 выглядят хорошо для меня.

Возможно, вам будет полезно ознакомиться с примером адресной книги.

Другие вопросы по тегам