我可以有条件地为 Windows 子系统编译 Rust 程序吗?

use*_*064 4 windows compilation rust

我有一个 Rust 程序,当我构建它进行分发时,我想为“windows”子系统编译该程序。目前我在 main.rs 中使用它:

#![feature(windows_subsystem)]
#![windows_subsystem = "windows"]
Run Code Online (Sandbox Code Playgroud)

这是可行的,但是当我在 Windows 计算机上运行测试时,Windows 子系统无法访问控制台,因此我看不到输出。我需要注释掉上面的代码行才能看到测试结果。

有没有办法有条件地编译我正在运行的子系统以使测试正常工作?

She*_*ter 9

正如《The Rust 编程语言》中所述,特别是有关条件编译的章节

您还可以使用以下命令基于cfg变量设置另一个属性cfg_attr

#[cfg_attr(a, b)]
Run Code Online (Sandbox Code Playgroud)

#[b]a按属性设置一样cfg,除此之外没有任何其他设置。

在这种情况下,它应该是这样的

#![cfg_attr(my_feature_name_i_made_up, windows_subsystem = "windows")]
Run Code Online (Sandbox Code Playgroud)

  • 甜的!有效。工作代码如下所示: #![feature(windows_subsystem)] #![cfg_attr(not(test), windows_subsystem = "windows")] #![cfg_attr(test, windows_subsystem = "console")] (2认同)