首页 > 解决方案 > 根据构建目标,在 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();
}

标签: rustfltk

解决方案


请参阅有关条件编译的 Rust 参考。您可以将#[cfg(...)]属性与target_os选项一起使用:

#[cfg(target_os = "windows")]
let menubar = MenuBar::default();

#[cfg(target_os = "macos")]
let menubar = SysMenuBar::default();

推荐阅读