Unityから出力したXcodeのプロジェクトの設定の Other Linker Flags に “-ObjC” を追加したかったので、方法を調べた。

Ruby の xcodeproj gemを使って、

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'xcodeproj'

# Xcodeのプロジェクトのターゲットの Build Settings > Linking > Other Linker Flags に
# フラグを追加する
def add_ldflags_to_targets(xcproj, target_name, flags)
  xcproj.targets.each do |target|
    next unless target_name === target.name
    target.build_configurations.each do |cfg|
      cfg.build_settings['OTHER_LDFLAGS'] |= flags
    end
  end
end

xcproj_path = ARGV.shift
target_name = ARGV.shift
flags = ARGV

xcproj = Xcodeproj::Project.new(xcproj_path)
xcproj.initialize_from_file

add_ldflags_to_targets(xcproj, target_name, flags)

xcproj.save

使い方: ruby add_ldflags.rb [xcodeprojパス] [ターゲット名] [追加するフラグ...]

# UnityからBuildで出力したプロジェクトに "-ObjC" を追加する場合
$ ruby add_objc.rb /Path/To/Project/Unity-iPhone.xcodeproj Unity-iPhone "-ObjC"