【发布时间】:2012-10-30 22:25:02
【问题描述】:
今天是我为 Xcode 4、工作区和项目而受苦的一天。
我有一个workspace 和一些开源库(openssl、sqlcipher 和其他几个)。在工作区中有一个“主要”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”。
在主“目标”(不是“项目”)和所有子项目(“项目”和“目标”)中,我确保没有特定于项目的构建设置覆盖(通过突出显示“预处理器宏”并按 COMMAND +删除)。然后我确保该字段设置为“$(inherited)”(不带引号)。
瞧,子项目不尊重“$(inherited)”。当我查看 Xcode 发出的命令行时,GCC_PREPROCESSOR_DEFINITIONS 中没有任何内容。例如,SqlCipher 的项目文件未使用从 Main 继承的构建设置进行编译。
我认为问题可能与Preprocessor Macros ignored in XCode's project settings, but not target settings 相似,但我似乎无法获得相同的 [肯定] 结果。
谁能向我解释如何让子项目兑现“$(继承)”?当我尝试通读 Apple 的文档时,我只会对阅读的内容和观察到的行为感到更加困惑。请像在和孩子说话一样解释它。
【问题讨论】:
标签: xcode xcode4 build-process dependency-management targets