LoginSignup
16
13

More than 5 years have passed since last update.

【iOS】cocos2d-x v3.10で静的ライブラリ作成〜実行まで

Last updated at Posted at 2016-04-12

覚えきれなくなってきたので、備忘録。Qiita初投稿

静的ライブラリ(Static Library)を使うと、Cleanしたあとやarchiveのたびにcocos2d-xの膨大なライブラリをコンパイルしなくて済むのでビルド時間が圧倒的に短縮されます

実行環境

  • Xcode7.3
  • cocos2d-x v3.10

cocos2d-xのセットアップは済んでいるものとします。(cocosコマンドが使える状態)

Static Libraryのビルド

基本的にここを参考にしました
http://discuss.cocos2d-x.org/t/how-to-speed-up-cocos2d-x-build-with-prebuilt-lib/23402

今回はiOS用にビルドするので、
cocos gen-libs -p ios
デフォルト設定だとreleaseでビルドされます。僕はこれでデバッグからストアへのリリースまで全てやりましたが特に問題は起こらなかったです。-pをつけない場合は全てのデバイス向けにライブラリが生成されるのでとても時間がかかります

完了したら、cocos本体のルートフォルダにprebuiltフォルダが追加されてます
cocos2d-x-3.10/prebuilt/
この中にStatic Libraryが置いてあります

プロジェクトファイルの設定

cocos newした直後のものから始めています

生成されたlibcocos2d iOS.aをプロジェクトファイルにぶちこみます。必要に応じてCopy items if neededのチェックは外します
スクリーンショット 2016-04-13 0.53.19.png

既存のライブラリは削除したいところですが、開発中にライブラリのソースを覗いたりする際に必要となるため、cocos2d_libs.xcodeprojの削除はせずにTargetの削除のみを行います。
スクリーンショット 2016-04-13 0.59.52.png
この2つのターゲットを削除します。これで元々あったライブラリがビルドされることはなくなります

ライブラリへのパスを通す

このまま実行しようとすると次のようなエラーが出ると思います
ld: library not found for -lcocos2d iOS
clang: error: linker command failed with exit code 1 (use -v to see invocation)

先ほど追加したlibcocos2d iOS.aへのパスが通ってない場合に出ます。普通にネイティブで開発しててもよくあるやつです。

いつものごとく、Build SettingsのLibrary Search Pathsにファイルへのパスを追加します
私の場合はホームディレクトリのドキュメント内にcocosのルートを置いているので、
$(HOME)/Documents/cocos2d-x-3.10/prebuilt/ios
になります。ここは各自の環境に合わせて記述することになると思います

参考:http://tristore.net/?p=1781

そのほかHello Worldまでに必要な設定

これでもまだビルドが通らないと思います。いつの間にかGameController.frameworkが要求されるようになるので、これも追加します
スクリーンショット 2016-04-13 1.11.18.png

実機で動かす場合は、Xcode7.3以降の場合に次のようなエラーが起こります
libpng error: CgBI: unhandled critical chunk
Xcode側で追加された何かが悪さをしているようです。
Build Settings内のRemove Text Metadata From Png FilesをNoにすると良いらしいです

参考:http://qiita.com/rustlica/items/d6c7c6dcf03d682d58b1

これで、やっと静的ライブラリを用いた実機によるHello Worldができます

おわりに

CocoaPodsを使う方はPodfileかいてpod installすればそのまま使えると思います。警告が結構でてきて気になるので、警告されてる部分の設定にそれぞれ$(inherited)を追加してあげると静かになります

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13