Help us understand the problem. What is going on with this article?

rakeでcoco2dx-3.0rc0用のstaticライブラリを作成する

More than 5 years have passed since last update.

cocos2d-xのsetup.pyでプロジェクトを作成すると便利なんですが、プロジェクトに全モジュールが階層的に組み込まれてしまい、Xcodeでのリビルドが非常に重くなるので、普段弄ることが少ないcocos2d_libs.xcodeprojはstaticライブラリ化するのが快適なビルド環境を作るのに一番手っ取り早いです。

cocos2d_libs.xcodeprojはたくさんのターゲットを持っているので、若干ライブラリを作成するのが面倒なこともあり、なるべくプロジェクト本体に手を入れずにビルドするために、次のようなRakefileを用意しました。

Rakefile
PROJECT_PATH = "../cocos2d/build/cocos2d_libs.xcodeproj"
TARGET_NAME="'build all libs iOS'"
OUTPUT_DEBUG="tmp/iphonesimulator"
OUTPUT_RELEASE="tmp/iphoneos"
OUTPUT_LIB="../lib"

desc "静的ライブラリをビルドします"
task "lib" do
    sh "xcodebuild -project #{PROJECT_PATH} -configuration Release -sdk iphonesimulator7.1 -target #{TARGET_NAME} TARGET_BUILD_DIR=../../build/#{OUTPUT_DEBUG} BUILT_PRODUCTS_DIR=../../build/#{OUTPUT_DEBUG} clean build"

    sh "xcodebuild -project #{PROJECT_PATH} -configuration Release -sdk iphoneos7.1 -target #{TARGET_NAME} TARGET_BUILD_DIR=../../build/#{OUTPUT_RELEASE} BUILT_PRODUCTS_DIR=../../build/#{OUTPUT_RELEASE} clean build"
end

desc "lipoコマンドで各デバイス向けの静的ライブラリをひとつのバイナリにします"
task "lipo" do

    Dir.glob("#{OUTPUT_RELEASE}/*"){|path|
        p path
        file = File.basename(path)

        sh "lipo '#{OUTPUT_DEBUG}/#{file}' '#{OUTPUT_RELEASE}/#{file}' -create -output '#{OUTPUT_LIB}/#{file}'"
    }
end

実機でもシミュレーターでも確認できるように、各デバイスターゲット向けにstaticライブラリでビルドして、lipoコマンドで1ファイルにまとめておきます。

出力先などは各々の環境に合わせて変更してください。
上記はトップディレクトリにビルド環境用にbuildディレクトリとstaticライブラリの出力先としてlibディレクトリを作成してます。
Rakefileはbuildディレクトリの下において、このディレクトリ内でrakeを実行しています。

補足
cocos2d_libsプロジェクトには少しだけ前処理を加えています。
Xcode5.1でarm64を外す方法

多謝

gree
インターネットを通じて、世界をより良くする。
http://gree.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away