<分区>
我有一个目前正在处理的 Rust 项目,我经常需要调试和部署它。当它被部署时,它在没有窗口的情况下在后台运行,但是当我调试时,我想要一个窗口来查看是否有任何运行时错误。
我目前使用 #![windows_subsystem = "windows"]
并在我调试时将其注释掉,但是程序本身有没有办法检查它是否处于 Debug模式以便它不使用那个标志?
标签 rust
<分区>
我有一个目前正在处理的 Rust 项目,我经常需要调试和部署它。当它被部署时,它在没有窗口的情况下在后台运行,但是当我调试时,我想要一个窗口来查看是否有任何运行时错误。
我目前使用 #![windows_subsystem = "windows"]
并在我调试时将其注释掉,但是程序本身有没有办法检查它是否处于 Debug模式以便它不使用那个标志?
最佳答案
您可以使用 #![<a href="https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute" rel="noreferrer noopener nofollow">cfg_attr</a>(predicate, attribute)]
如果特定谓词的计算结果为真,则仅使用属性进行编译。
至于谓词是什么,我的建议是使用显式 feature (例如 console
)当您想要使用非默认行为构建时设置(例如,显示控制台窗口)。
此外,如果您想让您的代码具有可移植性,您还应该检查您是否针对 Windows 进行编译。
在Cargo.toml
:
[features]
console = []
在main.rs
:
#![cfg_attribute(
all(
target_os = "windows",
not(feature = "console"),
),
windows_subsystem = "windows"
)]
然后你可以用--features console
编译或运行拥有默认 console
而是使用子系统。
如果您想实际检查 Debug模式,最接近的是 debug_assertions
谓词,在没有优化的情况下编译时默认启用。
关于rust - 仅当处于 Release模式时,我如何在没有窗口的情况下运行 Rust 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68238935/