Cargo build script

github logo ・1 min read

试用了下tower-grpc,作为萌新很多东西不知道,以前用这种都是protoc ....先生成代码,看了下example,结果就没发现哪儿有生成代码的过程。仔细看了下

pub mod hello_world {
    include!(concat!(env!("OUT_DIR"), "/helloworld.rs"));
}

use hello_world::{server, HelloReply, HelloRequest};

在 hello_world mod里面用 include! 把生成的代码给搞了进来。

ok,我们继续纠结生成的代码在哪儿?怎么生成的?

发现目录里面有个 build.rs 萌新虽然不了解这个,但是看他名字就知道和编译相关了,于是Google了一下
https://doc.rust-lang.org/cargo/reference/build-scripts.html

其实就是在build的时候执行的东西,还能指定build-dependencies什么的。简单看了下,这里面就是编译了.proto,然后输出到了OUT_DIR,所以上面的include!就能用了。

twitter logo DISCUSS
Classic DEV Post from Feb 19

How do you take breaks throughout the day?

How often, and what do you during them?

x1957 profile image
Join dev.to

If crime-fighting half-man/half-sharks can do it, so can you.