cocos2d-xのsetup.pyでプロジェクトを作成すると便利なんですが、プロジェクトに全モジュールが階層的に組み込まれてしまい、Xcodeでのリビルドが非常に重くなるので、普段弄ることが少ないcocos2d_libs.xcodeprojはstaticライブラリ化するのが快適なビルド環境を作るのに一番手っ取り早いです。
cocos2d_libs.xcodeprojはたくさんのターゲットを持っているので、若干ライブラリを作成するのが面倒なこともあり、なるべくプロジェクト本体に手を入れずにビルドするために、次のような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を外す方法
多謝