cargo rust构建脚本-打印命令输出

0qx6xfy6  于 2023-01-30  发布在  Go
关注(0)|答案(2)|浏览(177)

我是新的生 rust 和货物,我试图做一些非常简单的事情!
我有这样的东西(在build.rs):

use std::process::Command;

fn main() {
    Command::new("echo 123");
}

我希望看到命令echo 123的输出,希望123打印到构建输出中(这主要是为了调试我正在做的事情),而不是最终项目的一部分。
我试过cargo build --verbose-这个不起作用。
我不能从这些帖子中推断出答案(还有一些人喜欢):

我觉得这一定很简单--但是我已经在网上找了好几个小时,没有找到答案。

klsxnrf1

klsxnrf11#

仅仅用Command::new构建一个Command还没有执行它。它只是启动了一个构建器模式。要实际执行它,你必须使用方法spawnoutputstatus。示例:

Command::new("echo")
    .arg("123")
    .spawn()
    .expect("failed to spawn process");

很不幸的是,这并没有产生一个警告。有人recently tried to add the #[must_use] attribute to Command,这将使您的代码产生一个警告。公关关闭了,但它似乎是最终将添加。

anauzrmj

anauzrmj2#

我们可以使用一个宏,它在我这里工作,但有一个警告,因为它使用货物来显示。但这对我来说很好。我发现下面的代码来自git hub讨论:Cargo不显示www.example.com中命令的输出build.rs#985

macro_rules! p {
    ($($tokens: tt)*) => {
        println!("cargo:warning={}", format!($($tokens)*))
    }
}

fn main() {
    p!("BUILD.rs -> Starting ...");
}

相关问题