OCaml中的GUI交叉开发具有自然的外观和感觉

时间:2011-01-28 12:03:42

标签: installation cross-platform ocaml gtk godi

我想为我正在编写的OCaml应用程序构建一个GUI。我的第一个想法是使用GTK+。我希望我的应用程序可以在Mac,Linux,Windows上运行,具有自然的外观和感觉。我知道,虽然GTK +在默认情况下在Mac上使用X11(看起来很糟糕),但gtk-osx-application使用了石英,看起来很自然,我刚刚使用macport安装了它。

我有三个问题:

(1)实际上是否可以将gtk-osx-application +quartz+no_x11与OCaml一起使用? (之前我的GODI安装(基于x11的gtk2)安装了lablgtk2没有问题,现在(使用gtk-osx-application +quartz+no_x11和之前的基于x11的gtk2)抱怨找不到/opt/local/lib/libgtk-x11-2.0.0.dylib,与x11相关。但是,据我所知,当通过GODI安装lablgtk2时,没有办法选择石英而不是x11。)

(2)如果我使用gtk-osx-application在我的Mac上开发代码,我可以在其他使用不同GTK的平台上使用代码进行编译,还是会带来问题呢?

(3)如果它确实带来了问题,您是否知道在OCaml中开发GUI的任何其他环境可能对外观和感觉都有好处并且仍然可以很容易地交叉使用? (我知道labltk但我更喜欢具有更多功能的东西,例如,能够使用笔记本电脑,a.k.a标签面板,以及能够使用Glade进行快速GUI设计。)

感谢您的帮助!

干杯, Surikator

1 个答案:

答案 0 :(得分:3)

假设你可以让lablgtk工作,这可能是你目前最好的选择。

要使其正常工作:您是否尝试在删除X11 GTK并安装Quartz GTK后重建lablgtk?针对X11 GTK构建的LablGTK自然不适用于Quartz GTK,因为它将链接到错误的库,但重建可能会成功。也可能是LablGTK无法正确检测到X11集成调用无法正常工作,因此无法构建,但我认为由于LablGTK支持Windows,因此难以修复。

如果您在Mac上为GTK开发代码,它应该可以在其他平台上运行。当然,你会想要测试它,但它应该可以工作。请小心使用GTK工具使对话框按钮顺序正常工作。

我认为曾经有一组OCaml绑定到wxWidgets,但它们似乎并没有得到广泛使用,而且根据我的经验,使用wx很痛苦。还有一些关于制作Qt绑定的工作,这将是很棒的,但我认为还没有任何项目在这方面有很好的进展。

如果UI是项目中的一小部分,您可以考虑将其与后端分离,并使用Qt在C ++中编写UI,或编写平台本机UI,并让UI调用OCaml代码在嵌入式运行时中完成实际工作。但这可能是更多的工作,可能不会给你带来太多好处,具体取决于你的申请。

所以:GTK是您当前风景中的最佳选择。