根据构建目标,在 fltk-rs 中使用 fltk::osxMenuBar 或 MenuBar
Posted
技术标签:
【中文标题】根据构建目标,在 fltk-rs 中使用 fltk::osxMenuBar 或 MenuBar【英文标题】:Depending on Build Target, use fltk::osxMenuBar or MenuBar in fltk-rs 【发布时间】:2021-01-30 06:24:41 【问题描述】:我正在使用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();
【问题讨论】:
【参考方案1】:咨询Rust Reference on Conditional Compilation。您可以将#[cfg(...)]
属性与target_os
选项一起使用:
#[cfg(target_os = "windows")]
let menubar = MenuBar::default();
#[cfg(target_os = "macos")]
let menubar = SysMenuBar::default();
【讨论】:
以上是关于根据构建目标,在 fltk-rs 中使用 fltk::osxMenuBar 或 MenuBar的主要内容,如果未能解决你的问题,请参考以下文章
将目标更改为 x64 会破坏 Visual Studio 2017 中的 FLTK 构建
用于 VS2019 的 circa-2011 代码库的 FLTK 2.0 构建和演示
使用 Visual Studio 构建 FLTK 多线程 (MT) 项目