Xcode 4 : Project does not honor $(inherited) Build Setting in Workspace?

标签 xcode xcode4 build-process dependency-management targets

今天是我饱受 Xcode 4、工作区和项目之苦的一天。

我有一个workspace有一些开源库(openssl、sqlcipher 和其他一些库)。工作空间内有一个“Main”project它生成一个 EXE 作为目标。开源项目是“主”项目的“子项目”或“子项目”。它看起来类似于以下内容:

Main Project
  +- OpenSSL Project
  +- SqlCipher Project
  ...

在“主”项目中的“项目”(而不是“目标”)下,我设置了预处理器和警告标志 build settings 。例如,调试预处理器宏为“DEBUG=1 SQLITE_DEBUG=1 SQLITE_HAS_CODEC=1”(不带引号)。相反,发布预处理器宏设置为“NDEBUG=1 NS_BLOCK_ASSERTIONS=1 SQLITE_HAS_CODEC=1”。

在主“目标”(不是“项目”)和所有子项目(“项目”和“目标”)中,我确保没有特定于项目的build设置覆盖(通过突出显示“预处理器宏”并按命令+删除)。然后,我确保该字段设置为“$(inherited)”(不带引号)。

你瞧,子项目不支持“$(inherited)”。当我查看 Xcode 发出的命令行时,没有发现 GCC_PREPROCESSOR_DEFINITIONS 中应该存在的任何内容。例如,SqlCipher 的项目文件不是使用从 Main 继承的build设置进行编译的。

我认为问题可能类似于 Preprocessor Macros ignored in XCode's project settings, but not target settings ,但我似乎无法得到相同的[积极]结果。

有人可以向我解释如何让子项目尊重“$(继承)”吗?当我尝试通读 Apple 的文档时,我只会对所读到的内容和所观察到的行为感到更加困惑。请像对 child 说话一样解释。

最佳答案

这些设置不会跨越项目边界。我建议您使用 .xcconfig 文件来配置目标(这些文件可能会被多个项目引用)。


更新/说明:使用示例设置:主项目的build设置可能会影响主项目的任何目标,但它们不会交叉到 OpenSSL 项目的目标。

关于Xcode 4 : Project does not honor $(inherited) Build Setting in Workspace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327744/

相关文章:

ios - 在 Xcode 中,如何在运行测试时不运行某些运行脚本构建阶段?

ios - 选项卡式应用程序而不是 xcode 中的单一 View 应用程序?

objective-c - 在 Xcode 中为无法识别的选择器创建断点

TFS 2010 构建 - 批处理文件 'access denied'

java - ant 依赖与 antcall

iphone - 无法在 UIDatepicker 中解锁之前的月份和日期并且还显示 ios 中的时间

ios - 如何在 Sprite Kit 中制作动画按钮

存档未出现在 xcode4 管理器中

xcode - 我可以从 Xcode 检查核心数据模型吗?

build - Jenkins - 我如何将参数从上游传递到下游