2011-01-28 3 views
5

私が書いているOCamlアプリケーション用のGUIを構築したいと思います。私の最初のアイデアはGTK+です。私のアプリケーションは、自然な外観と感触でMac、Linux、Windows上で動くようにしたいと思います。 GTK +はデフォルトでMac上でX11を使用していますが(ひどい)、gtk-osx-applicationがあります。これはクォーツを使用していて自然に見えますし、Macportを使ってインストールしました。自然なルックアンドフィールでのOCamlのGUIクロス開発

私は3つの質問を持っている:

(1)OCamlのでgtk-osx-application +quartz+no_x11を使用するために、実際には可能ですか? (以前はx11ベースのgtk2をインストールした私のGODIインストールで問題なくlablgtk2がインストールされました(gtk-osx-application +quartz+no_x11と以前のx11ベースのgtk2は削除されました)、x11関連の/opt/local/lib/libgtk-x11-2.0.0.dylibが見つかりませんでした。私が知っているように、GODIを通してlablgtk2をインストールするときに、x11上で石英を選択する方法はありません。)

(2)gtk-osx-applicationを使って自分のMacでコードを開発した場合、異なるGTKを使用する他のプラットフォームでコンパイルするか、これが問題を引き起こす可能性がありますか?

(3)問題が発生した場合は、OCamlでGUIを開発するための他の環境がありますが、ルックアンドフィールの両方で良好である可能性があります。 (私はlabltkに気付いていますが、ノートブックを使用する能力、タブ付きパネル、Gladeを高速GUI設計に使用できるなど、より多くの機能を備えたものを好むでしょう)

ありがとうございました!あなたはlablgtkが仕事を得ることができますと仮定

乾杯、 Surikator

+0

私はアプリケーションのGUIを大いに混乱させる必要はありませんでしたが、x-platformソリューションにはREAL BASICを使用しています。私はそれがかなりよかったと思う。 – nlucaroni

+0

私が誤解していない限り、最も安いバージョンは100ドルかかります。これはあなたが話しているものですか? – Surikator

答えて

3

、それはおそらく、現時点で最善の策です。

:X11 GTKを削除してQuartz GTKをインストールした後、lablgtkを再構築してみましたか? X11 GTKに対して構築されたLablGTKは間違ったライブラリとリンクされるため、当然Quartz GTKでは動作しませんが、再構築が成功する可能性があります。また、LablGTKがX11統合呼び出しが機能しないため、ビルドに失敗したことを正しく検出できない場合もありますが、LablGTKがWindowsをサポートしているので修正するのは難しくないと思います。

MacでGTK用のコードを開発する場合は、他のプラットフォームでもうまく動作します。もちろん、テストしたいと思うでしょうが、うまくいくはずです。 GTK機能を使用して、ダイアログボタンの注文などが適切に機能するように注意してください。

私は一度にwxWidgetsにOCamlバインディングのセットがあったと思いますが、それらは広く使われているようではなく、wxは私の経験ではうまく動作しません。また、Qtバインディングの作成にはいくつかの作業がありましたが、これはすばらしいことですが、その前にはまだ良いプロジェクトがあるとは思いません。

もしあなたのプロジェクトがちょっとしたものなら、バックエンドからそれを切り離して、UIをC++でQtで書くか、あるいはプラットフォーム固有のUIを書いてUIをOCamlに呼び出すことができます実際の作業を完了させるために、組み込みランタイムのコードを作成します。しかし、それはおそらくより多くの仕事であり、あなたのアプリケーションに応じて多くの利益をもたらすとは限りません。

So:現在のランドスケープではGTKが最適です。

+0

@MichaelE徹底的で非常に有用な答えをありがとう。私はバックエンドのオプションを考慮しました。特に、私のシステムには端末/コンソールのUIもあるので、実行可能な選択肢に見えます。しかし、GUIはユーザーにいくつかの内部的なデータ構造を提示しなければならないので、C++などでそれらを複製する必要はありません。ですから、今はlablgtk2のインストールを修正しようとしています。私の次のコメントを見てください。 – Surikator

+0

@MichaelEはい、注文は:(1)x11 GTKを取り除く、(2)石英GTKをインストールする、(3)GODIでlablgtk2をアンインストールする、(4)GODIにlablgtk2をインストールする。私は今、godi-lablgtk2を--without-gladeでインストールすることに成功し、コンパイルに成功しました。それは何とか良いニュースですが、私がGTKから期待していた素晴らしいことの一つは、まさにGladeでした。何か案は? – Surikator

+0

また、奇妙なことが起こっています。 'helloworld.ml'を' ocamlc -I + lablgtk2 -o helloworld lablgtk.cma gtkInit.cmo helloworld.ml'でコンパイルしても、すべて問題なく実行可能ファイルが実行されます。しかし、私が 'ocamlbuild -libs lablgtk -cflags -I、/ Users/surikator/godi/lib/ocaml/pkg-lib/lablgtk2 -lflags -I、/ Users/surikator/godi/lib/ocaml/pkg-libでコンパイルすると/ lablgtk2 tmp/toolbar.native'コンパイルは正常ですが、実行時に 'GLib-GObject-CRITICAL **:g_signal_connect_data:アサーション 'G_TYPE_CHECK_INSTANCE(instance)'のようなものがたくさんあります。 – Surikator

関連する問題