能否仅在发布模式下调用 build.rs?

5
在 Rust 的包中,是否可能仅在发布模式下调用 build.rs?可以在 Cargo.toml 中指定:
[package]
build = "build.rs"

问题在于,对于开发来说,它延迟了编译创建的源代码的开始。 Cargo指南 似乎没有提供这样的选项。

有趣的是,即使在build.rs中使用#[cfg(not(debug_assertions))](或类似语句),也无法正常工作。类似以下配置也不行:[profile.release] build = "build.rs" - Philipp Mildenberger
2
欢迎来到Stack Overflow!看起来您的问题可能已经在如何从构建脚本(build.rs)中访问当前货物配置文件(debug/release等)的答案中得到了回答。如果没有,请**[编辑]**您的问题以解释差异。否则,我们可以将此问题标记为已回答。 - Shepmaster
1
根据您的使用情况,您可以通过发出“rerun-if-changed=PATH”行来减少build.rs运行的频率。 - Sven Marnach
我的问题旨在最小化开发过程中获取编译器消息所需的时间。 - zxvaf
谢谢,Shepmaster。这个问题的不同之处在于什么。 - zxvaf
问题是如何减少编辑-编译-错误消息的延迟。rerun_if_changed_path("path/file")比"if profile.as_str() == "release"."具有更小的延迟。非常感谢Sven Marnach。这里还有rerun_if_changed_path的其他示例代码:https://crates.io/crates/build-deps - zxvaf
1个回答

2
你可以使用这个构建脚本。 Cargo 会将 PROFILE 环境变量传递给 rustc 调用,可以用于确定活动配置文件。
// build.rs
use std::env;

pub fn main() {
    if Ok("release".to_owned()) == env::var("PROFILE") {
        panic!("I'm only panicking in release mode")
    }
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接