我如何在没有窗口的情况下运行只有当它处于发布模式的 Rust 程序时



我目前正在处理一个Rust项目,我经常要调试和部署它。当它被部署时,它在后台运行,没有窗口,但当我调试时,我想要一个窗口来查看是否有任何运行时错误。

我目前使用#![windows_subsystem = "windows"],并在调试时将其注释掉,但程序本身是否有方法检查它是否处于调试模式,从而不使用该标志?

如果特定谓词的计算结果为true,则只能使用#![cfg_attr(predicate, attribute)]与属性一起编译。

至于谓词是什么,我的建议是使用一个显式功能(例如console(,当您想要使用非默认行为构建时(例如,显示控制台窗口(,您可以设置该功能。

此外,如果你想让你的代码是可移植的,你还应该检查你是为Windows编译的。

Cargo.toml:中

[features]
console = []

main.rs:中

#![cfg_attr(
all(
target_os = "windows",
not(feature = "console"),
),
windows_subsystem = "windows"
)]

然后,您可以使用--features console进行编译或运行,以使用默认的console子系统。


如果您想实际检查调试模式,最接近的是debug_assertions谓词,它在不进行优化的编译时默认启用。

main.rs:中

#![cfg_attr(
all(
target_os = "windows",
not(debug_assertions),
),
windows_subsystem = "windows"
)]

最新更新