前回に続き、camlkit-examplesを試してみました。
camlkit-examples
https://github.com/dboris/camlkit-examples
gnustep用のexampleとして、 c-gnustep-appがあります。これを試してみました。
[実行結果]
下記修正箇所があります。
1 dune file
Appkitライブラリの読込み設定
macOS用からGhostBSD用に変更
(flags :standard -ccopt "-framework AppKit")
-> (flags -ccopt -L/usr/local/GNUstep/System/Library/Libraries -cclib -lgnustep-gui)
2 Appkit_globals モジュール
camlkitライブラリのAppkit_globalsモジュールには、GNUstepで定義されていない文が含まれています。このため実行時にエラーが起こります。
このモジュールの中から今回必要となるところだけ取り出して、Appkit_globalモジュール(appkit_global.ml)とします。これはmain.ml , app_delegate.mlで読み込まれます。
appkit_global.ml
open Runtime open Objc let _NSWindowStyleMaskTitled = 1 let _NSWindowStyleMaskClosable = 2 let _NSWindowStyleMaskResizable = 8 let _NSBackingStoreBuffered = 2 let _NSApplicationMain = Foreign.foreign "NSApplicationMain" (int @-> (ptr string) @-> returning int)
c-gnustep-app
dune(修正箇所1)
dune-project(そのまま)
app_delegate.ml(修正箇所2)
main.ml(修正箇所2)
Info-gnustep.plist(そのまま)
appkit_global.ml(追加、修正箇所2)
これで実行が可能となります。
ビルド
dune build
dune file にある subdir を実行するには、buildが必要です。
これでGSApp.appディレクトリが作成されます。
実行
dune exec ./main.exe or dune exe ./GSApp.app/GSApp