今天是我忍受 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 的文档时,我只会对阅读的内容和观察到的行为感到更加困惑。请像在和孩子说话一样解释它。