Передача значений символов компилятору Rust во время сборки - PullRequest
0 голосов
/ 05 марта 2020

В моих Go сборках я обычно включаю эти строки:

buildInfo="`date -u '+%Y-%m-%dT%TZ'`|`git describe --always --long`|`git tag | tail -1`"
go build -ldflags "-X main.buildInfo=${buildInfo} -s -w" ./cmd/...

, а затем в main я разбираю buildInfo на три отдельных значения, которые могут отображаться в сообщении об использовании. Это позволяет мне видеть метку времени компиляции, git га sh и номер semver исполняемого файла.

Есть ли подобный способ сделать это в компиляторе Rust?

1 Ответ

1 голос
/ 05 марта 2020

Вы хотите использовать сценарий сборки , как описано здесь: https://doc.rust-lang.org/cargo/reference/build-scripts.html

Вам необходимо написать файл build.rs Rust, расположенный в root вашего ящика, который будет скомпилирован и запущен на машине go непосредственно перед сборкой ящика, в котором вы можете выводить определенные строки, которые, в свою очередь, будут интерпретироваться Car go для управления компиляцией.

Например, если вы напишите скрипт сборки со следующим содержимым:

fn main() {
    println!("cargo:rustc-env=BUILD_INFO=VALUE");
}

Тогда исходные файлы вашего проекта могут использовать переменную BUILD_INFO, например:

let buildInfo = env!("BUILD_INFO");

В вашем В этом случае сценарий сборки может, например, определить текущую временную метку или вызвать исполняемый файл git и проанализировать его вывод.

...