今天是我饱受 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/