Cocos2d-xのwin32プロジェクトのビルドを高速化する

タイトルの通りですが、win32プロジェクトで、あらかじめDLLをgen-libsコマンドで作成し、コンパイルの時間を高速化します。

2019年9月10日追記

Cocos2d-x 3.17.1 以降だと lib-genコマンドが削除されてしまったので以降のバージョンでDLLを作る方法は以下を先に参照してください。途中でこの記事に戻ってきますがDLLを作成するところまでを以下記事内で説明しています。
takachan.hatenablog.com

iOSだとスタティックライブラリを使用して高速化するあたりの話と同じです。

ちなみに、元ネタは以下のフォーラムです。が、このforumプロジェクトのファイルを手で書き直せなどなかなか難易度が高いのでVisualStudio(GUI)上で作り方を説明したいと思います。

元ネタ
discuss.cocos2d-x.org

ちょっと長いですが、最後までお付き合い頂けたらと思います。

開発環境

開発環境は以下の通りです。

Item Value
OS Windows10
IDE VisualStudio2015 Community版
Cocos2d-x 3.11.1

前提条件

Cocos2d-xは以下の通りインストール済みとします。

D:\ProgramFiles\Cocos\cocos2d-x-3.11.1

環境変数は上記パスでsetup.pyを使用したので以下の通りになっています。

[PATH]
D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\templates
D:\ProgramFiles\Cocos
D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\tools\cocos2d-console\bin

[COCOS_CONSOLE_ROOT]
D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\tools\cocos2d-console\bin

[COCOS_TEMPLATES_ROOT]
D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\templates

[COCOS_X_ROOT]
D:\ProgramFiles\Cocos

pre-builtコマンドの実行

早速始めたいと思います。

cdコマンドでカレントディレクトリを移動します。

cd D:\ProgramFiles\Cocos\cocos2d-x-3.11.1

まずはコマンドプロンプトで以下のコマンドを打ち込んで実行します。

cocos gen-libs -p win32 --vs 2015 -m debug

かなり時間がかかるので完了までしばらく待ちます。
完了すると以下のパスにLibやDLLが生成されているので中身を確認します。

D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\prebuilt

これを以下のフォルダを作成して中身をすべて移動します。

D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\prebuilt\win32\Debug

移動後に以下ファイルから_2015を削除します。(Cocos2d-x 3.17以降からサフィックスが付かなくなったみたいなので以下作業不要かも

libcocos2d_2015.dll → libcocos2d.dll
libcocos2d_2015.lib → libcocos2d.lib
libbox2d_2015.lib → libbox2d.lib
libSpine_2015.lib → libSpine.lib

プロジェクトの作成

すでに作成済みのであれば不要ですが、cocos newコマンドを使ってプロジェクトを新規に作成します。

cocos new Sample -d D:\Development -p com.sample -l cpp

VisualStudioの起動

Cocosプロジェクトのwin32プロジェクトを起動します。

ソリューションファイルを選択して開きます。

f:id:Takachan:20160815150300p:plain:h200

起動するとこんな感じになっていると思います。

f:id:Takachan:20160815150330p:plain:h200

プロパティシートの入れ替え

プロパティファイルの入れ替えを行います。
今は表示するにもわかりにくい位置にあるのですが、まずプロパティマネージャーウインドウを表示します。

画面上部のツールバーから以下を選択します。

表示 > その他のウインドウ > プロパティマネージャー

f:id:Takachan:20160815150634p:plain:h200


プロパティマネージャウインドウから作成したプロジェクトのDebug側のプロパティを表示します。

f:id:Takachan:20160815150942p:plain:h200

ここでツリーに表示されている以下を削除します。

"cocos2d_headers"
"cocos2dx"

f:id:Takachan:20160815151533p:plain

新しいプロパティシートを追加します。

Debugを右クリックして「既存のプロパティ シートの追加」を選択します。

f:id:Takachan:20160815151540p:plain

ファイル選択ダイアログが出るので以下のパスを指定します。(複数は選べないので2回操作します)

D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\cocos\2d\cocos2d_headerd.proprs
D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\cocos\2d\cocos2dx.props

f:id:Takachan:20160815151954p:plain

追加が完了すると以下のような表示になります。

f:id:Takachan:20160815152154p:plain

ライブラリパスの変更

次はライブラリパスの変更です。

Sampleプロジェクトのプロパティを選択してプロパティダイアログを表示します。
ダイアログの右側のツリーから

VC++ ディレクトリ

を選択し、右側のリストの

「ライブラリディレクトリ」

を選択します。

f:id:Takachan:20160815152424p:plain:h200

欄の右側の編集ボタンを押して編集ダイアログを表示しDLLがあるフォルダパスを指定します。

f:id:Takachan:20160815152602p:plain:h200

入力が完了すると以下のようになります。

f:id:Takachan:20160815152725p:plain:h200

依存ファイルの追加

次に依存ファイルの追加を行います。

同じプロパティダイアログの右側ツリーから

リンカー > 入力

を選択し、右側リストの

「追加の依存ファイル」

を選択します。また、右側の編集ボタンを押してダイアログから追加の依存ファイルに

libcocos2d.lib

を入力します。

f:id:Takachan:20160815153103p:plain:h200

入力したら[OK]を押して元の画面に戻ると以下のようになります。

f:id:Takachan:20160815153148p:plain:h200

デバッグ環境(環境変数)の追加

次に環境変数の追加の設定を行います。

同じプロパティダイアログの右側ツリーから

デバッグ

を選択し、右側リストの

環境

へ以下の値をそのまま入力します。

PATH=D:\ProgramFiles\Cocos\cocos2d-x-3.11.1\prebuilt\win32\Debug;%PATH%
(必ず"PATH="から入力してください。"d:\"以降だけ入力しても動きません)

入力すると以下のようになります。

f:id:Takachan:20160815153413p:plain:h200

ソリューションから不要なプロジェクトの除去

ソリューションから以下、不要なプロジェクトを削除します。

libbox2d
libbullet
libcocos2d
librecast
libSpine

f:id:Takachan:20160815153955p:plain:h200

削除すると以下の通りになります。

f:id:Takachan:20160815154055p:plain

動作確認

以上で、プロジェクトの設定は完了しましたので動作を確認したいと思います。

"Sample"をスタートアッププロジェクトに設定して、画面上部のローカル Windows デバッガー... を選択します。

以下の通り画面が表示されれば成功です。

f:id:Takachan:20160815154306p:plain:h200

これで、ビルドがかなり早くなったと思います。
お疲れ様でした。