何があった
SublimeText2でOpenFLを含むHaxeのコードを書いてたところ、SublimeText2上でのビルドが通らなくて泣いた。
何がしたかった
ちゃんとしたビルドはlimeを通すんですが、コンパイルエラーが無いかチェックしたいためにビルドしたいのです。
build.hxmlにどう書いたら良いねん
1回目
とりあえず、まずやりたい事をbuild.hxmlに書いてみる。
build.hxml
-cp Source
-main CompileOnly
--no-output
-cpp No output
で、ビルド
You cannot access the flash package while targeting cpp (for flash.media.Sound)
駄目でした。
2回目
まあ、libの設定しないと駄目だよね、HAHAHAHA。ってことで。
build.hxml
-cp Source
-main CompileOnly
--no-output
-lib lime
-lib openfl
-lib openfl-native
-lib actuate
-cpp No output
で、ビルド
You cannot access the flash package while targeting cpp (for flash.media.Sound)
あれ?なんで?
3度目の正直
情報探すと、それっぽい答えを発見。
どうやら、Haxeが最初から持ってるFlashのパッケージが同じ名前で、そいつがFlash出力しか許可してないためっぽい。
で、それを回避するのにallowPackageでパッケージの使用を許可させる必要があると。
で、最終的に。
build.hxml
-cp Source
-main CompileOnly
--no-output
-lib lime
-lib openfl
-lib openfl-native
-lib actuate
--macro allowPackage("flash")
-cpp No output
これで、通りました。
OpenFLのバージョンアップでやり方が変わりました
OpenFLのバージョンアップに伴いパッケージ構成が変わったので以前のやり方では上手く出来なくなっています。
最新版のOpenFLを使う場合は次のようにしましょう。
ちなみに、CompileOnlyはstatic mainを定義し、対象ソースをインポートしたダミーファイルになります。
build.hxml
-cp Source
-main CompileOnly
--no-output
-lib openfl
--macro openfl.Lib.includeBackend("native")
--remap flash:openfl
-cpp No output