我目前正在处理一个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"
)]