macOS向け .app 形式での配布
macOS向けにアプリを配布する場合bundle(.app)にしたい。
SDLはframeworkを配布してるのだが、SDL2_imageなどを使おうとすると、
ヘッダファイルのパスが一般的なUNIX環境と変わってしまうため、 #include <SDL2_image.h> とかやると失敗する。
Linuxの場合やMacPortsでSDLを入れた場合なんかは、だいたい /usr/include/SDL2/ みたいなとこに入り sdl2-config --cflags で
よしなにインクルードパスを渡してくれるわけだが、フレームワークを使う場合、 フレームワーク名/hoge.h つまり SDL2_image/SDL2_image.h
といったパスになってしまう。
というわけで、 -I/path/to/framework/SDL2_image.framework/Headers/ のようにインクルードパスはフレームワークごとに渡すことにした。
あと、実行ファイルからフレームワークへのリンクを、 install_name_tool で @rpath から @executable_path を使ったものに変更してやる必要がある。
ちゃんと変更されてるか、妙なものとリンクしてないかなどは otool -L mruby で確認できる。
mirb で使ってる ncurses などに mruby もリンクしてるのがあまり適当でない感じがするので、 mirb のビルドは分けた方が良いかもしれない…。