loading...

Cargo build script

x1957 profile image x1957 ・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!就能用了。

Discussion

markdown guide