Xcode
cocos2d-x

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

More than 3 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を外す方法

多謝