xcode用于同一目标上的设备与模拟器的不同链接器/ cflags?

dru*_*ass 4 iphone xcode

任何人都知道是否有可能在xcode中的同一构建目标上为模拟器与设备设置不同的cflags /链接器标志.

nev*_*vyn 8

在.xcconfig文件中,您可以拥有

OTHER_CFLAGS[sdk=iphoneos*] = foobar
OTHER_CFLAGS[sdk=iphonesimulator*] = barfoo
Run Code Online (Sandbox Code Playgroud)

任何构建设置都可以以多种方式为条件,例如sdk的短名称.例如,设备SDK名为iphoneos-4.0,而sim iphonesimulator-4.0.因此,上面的设备为CFLAG为'foobar',为sim提供'barfoo'.

要快速开始使用xcconfigs:

  1. 新文件>其他>配置设置文件
  2. 打开项目或目标编辑器(cmd-alt-E表示目标编辑器)
  3. 选择要自定义的设置(如cflags),然后使用cmd-c复制它
  4. 粘贴到新的xcconfig文件中
  5. 修改如上
  6. 在项目或目标编辑器的右下角,选择xcconfig文件为"基于".

请注意构建设置UI现在如何编辑条件...您可以使用左下方按钮创建新条件,但不允许您设置"iphoneos*",例如,仅设置特定版本.

请注意,神奇的$(继承)允许您创建一个继承项目设置但只覆盖其中一部分的设置,如下所示:

OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) foobar
OTHER_CFLAGS[sdk=iphonesimulator*] = $(inherited) barfoo
Run Code Online (Sandbox Code Playgroud)

我不知道xcconfigs的一个很好的资源,但这无论如何都会让你入门:http://robnapier.net/blog/build-system-1-build-panel-360#more-360