Cocos2d-x 3系で Android の NDKビルドをパラレルに行ってビルド時間を短縮する
以前こちらの記事にて2系の場合のやり方を書きました。
http://qiita.com/d_nishiyama85/items/945365ad6385c0f81f9f
Cocos2d-x 3系では上の記事では対応できないので今回改めて書いてみます。動作確認は 3.2 で行なっています。
やりたいこと
要はC++のソースをコンパイルするコマンドである、ndk-build に並列するプロセスの数を nkd-build -j 7
のようにオプションとして渡せればよい、というお話です。なお、指定する数をマシンのコア数以上にしてしまうとコンパイルに全てのCPUリソースを使ってしまうため、マシンがかなり重くなってしまい、OSの操作自体もやりにくくなってしまいます。指定する数は最大でも (コア数 - 1) がオススメです。
cocos コマンドの場合
Cocos2d-x の3系において Android のビルドはコマンドラインでは cocos
コマンドで行うと思います:
cocos compile -p android
このcocos
コマンドには、使っているマシンのCPUのコア数を取得してこのオプションを自動的に追加する機能が組み込まれているのですが、 python の外部ライブラリ numpy に依存しているため、必ずしも動くとは限りません。
わたしの環境 (OSX, Mavericks)では numpy が入っていなかったのでコア数を取得できず、1プロセスでのコンパイルになっていまいました。
対策として、numpy をインストールすればいいのですが、諸事情でできない or したくない、という人は以下のようにしましょう。
並列数をオプションとして明示的に渡す
cocos compile -h
でヘルプを見ると、-j N
または --jobs N
(Nは数値)で並列数を渡すことができる事がわかります:
これで numpy がなくても並列ビルドをしてくれます:
cocos compile -p android -j 7
Eclipse の場合
Eclipse の実行ボタンでビルドする場合には cocos
コマンドとは別のビルドスクリプトが使われます。
Eclipse のプロジェクトを右クリック → プロパティー → C/C++ ビルド → ビルダー設定 にビルドコマンドが書いてあります:
これを見ると、proj.android のは以下にある build_native.py というスクリプトが使われるようです。
このスクリプトのヘルプを見ると、-n
というオプションに続けて書けば ndk-build
にオプションを渡せるようです:
したがって、Eclipse のビルドコマンドの設定に -n -j7
などと追加すればよいことになります。(Eclipseのスクリーンショット参照)
python ${ProjDirPath}/build_native.py -b debug -n -j7
追記: build_native.py のオプションに関しては -j と 7 の間にスペースを入れると 7 が認識されず、プロセスが無限に生成されてビルドが暴走する、という状況になっていました。修正します。
Author And Source
この問題について(Cocos2d-x 3系で Android の NDKビルドをパラレルに行ってビルド時間を短縮する), 我々は、より多くの情報をここで見つけました https://qiita.com/d_nishiyama85/items/5e95ce048e5ee60bfa72著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .