【Unity5】Xcode出力時にプリプロセッサマクロを登録する方法
Unity5からUnityEditor.iOS.Xcode
という名前空間が追加された模様です。
これはUnite Japan 2015でユニティ・ジャパンの伊藤さんの講演を受けた際に知ったのですが、どうもまだドキュメントがないらしいです。
UnityEditor.iOS.Xcode
はUnityからiOSのプラットフォームを出力する際に、Xcodeのプロジェクトに対して、C#のスクリプトから色々と操作が可能になっています。
とりあえず題名の通り、Xcode出力時にプリプロセッサマクロを登録することができたのでその方法を紹介したいと思います。
確認した環境はUnity5.0.1、Xcode6.1.1となっています。
using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public static class PostProcessBuildScript { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject pbxProj = new PBXProject(); pbxProj.ReadFromString(System.IO.File.ReadAllText(projPath)); string target = pbxProj.TargetGuidByName("Unity-iPhone"); string debugConfig = pbxProj.BuildConfigByName(target, "Debug"); string releaseConfig = pbxProj.BuildConfigByName(target, "Release"); pbxProj.AddBuildProperty(target, "GCC_PREPROCESSOR_DEFINITIONS", "PLATFORM_IOS=1"); pbxProj.AddBuildPropertyForConfig(debugConfig, "GCC_PREPROCESSOR_DEFINITIONS", "DEBUG=1"); pbxProj.AddBuildPropertyForConfig(releaseConfig, "GCC_PREPROCESSOR_DEFINITIONS", "RELEASE=1"); System.IO.File.WriteAllText(projPath, pbxProj.WriteToString()); } } }
上記のスクリプトを/Assets/Editor/内に入れておき、出力されたXcodeを確認すると以下のようになりました。