Xcode 4:Project不支持Workspace中的$(继承)Build Setting?

时间:2012-11-11 01:15:57

标签: xcode xcode4 build-process dependency-management targets

今天是我通过Xcode 4,工作区和项目受苦的日子。

我有一个workspace,其中包含一些开源库(openssl,sqlcipher和其他几个)。在工作区内有一个“Main”project,它产生一个EXE作为目标。开源项目是“主要”项目的“子项目”或“子项目”。它看起来类似于下面:

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

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

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

瞧,孩子们的项目不尊重“$(继承)”。当我查看Xcode发出的命令行时,GCC_PREPROCESSOR_DEFINITIONS中不存在任何内容。例如,SqlCipher的项目文件不使用Main的继承构建设置进行编译。

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

有人可以向我解释如何让儿童项目兑现“$(继承)”吗?当我尝试阅读Apple的文档时,我只会因为我阅读的内容和我观察到的行为而感到困惑。请解释一下,好像你正在和一个孩子说话。

1 个答案:

答案 0 :(得分:2)

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


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