rust - 根据构建目标,在 fltk-rs 中使用 fltk::osxMenuBar 或 MenuBar
问题描述
我正在使用fltk-rs创建一个跨平台的 GUI 应用程序。根据我的目标平台(OSX 或 Windows),我想为我的菜单栏使用不同的结构。如果我的目标是 OSX,我想使用我的菜单栏fltk::menu::SysMenuBar
和 Windows,我想使用fltk::menu::MenuBar
.
我不想保留我的代码的不同版本,一个用于 Windows,一个用于 OSX,这样我就可以为我的菜单使用不同的不同 Struct。
有哪些方法可以在不创建不同代码库的情况下根据构建目标更改使用的结构?
use fltk::{app::*, frame::*, image::*, window::*, menu::*};
fn main() {
let app = App::default().with_scheme(Scheme::Gleam);
let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
//if target is Windows
let menubar = MenuBar::default()
//if target is OSX
let menubar = SysMenuBar::default()
wind.end();
wind.show();
app.run().unwrap();
}
解决方案
请参阅有关条件编译的 Rust 参考。您可以将#[cfg(...)]
属性与target_os
选项一起使用:
#[cfg(target_os = "windows")]
let menubar = MenuBar::default();
#[cfg(target_os = "macos")]
let menubar = SysMenuBar::default();
推荐阅读
- database - Data Vault 2 - 哈希差异和重复数据更改
- android - Flutter:在加载时阻止用户与 UI 的交互,例如 android flag intouchable
- python - 如何阻止 Python 的 Sys 模块的“stdout”和“stderr”写入方法返回写入的字符数
- java - 如何获得一系列视图以在 android studio 中显示/隐藏/更改?
- python - 将“继续”从函数内部传递到 Python 中的外部循环
- awk - awk 根据条件向列添加一个
- python - 熊猫无法读取同一目录中的 csv
- forms - Nuxt 和 Netlify 表单文件上传问题
- javascript - 尝试从回调中计算 2 个值(使用 JavaScript 的 Binance Api)
- django - Django 3.0 URL 参数