LoginSignup
26
26

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-03-22

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

多謝

26
26
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
26
26