2

今天是我忍受 Xcode 4、工作区和项目的日子。

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

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

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

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

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

我认为这个问题可能类似于Preprocessor Macros 在 XCode 的项目设置中被忽略,但不是目标设置,但我似乎无法得到相同的 [肯定] 结果。

谁能向我解释如何让子项目兑现“$(继承)”?当我尝试通读 Apple 的文档时,我只会对阅读的内容和观察到的行为感到更加困惑。请像在和孩子说话一样解释它。

4

1 回答 1

3

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


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

于 2012-11-12T01:22:52.543 回答