我有一个项目,其中包含一个主要的 Cocoa 应用程序、一堆插件和几个辅助应用程序。辅助应用程序有自己的目标,因为我希望应用程序可以在没有插件的情况下构建,所以主应用程序有自己的目标(称为 AppTarget),但我通常将其全部构建在聚合目标中(称为 TargetA)。我还有另一个带有 TargetA 的聚合目标、另一个插件和一个附加的复制文件构建阶段 (TargetB)。这一切都按预期工作。我正在尝试创建一个新的聚合目标 TargetC,它包含 TargetA,并且将具有(但还没有)运行 Shell 脚本构建阶段。
我遇到的问题是我正在尝试使用 GCC_PREPROCESSOR_DEFINITIONS 来#define 一个符号 TARGETC,用于条件编译(#ifdef TARGETC ... #endif),但是当我查看时它没有包含在构建参数中在构建日志中,并且应用程序的行为与构建日志匹配 - GCC_PREPROCESSOR_DEFINITIONS 失败(我尝试了 TARGETC 和 TARGETC=1。我尝试添加 OTHER_CFLAGS 用户定义设置(将其设置为 -DTARGETC=1),但是那也没有用。
文档说聚合目标上的用户定义设置会渗透到它们的子目标,但似乎这只下降了一层——TargetA 可能会得到它,但 AppTarget 肯定不会。这是一个错误,预期的行为,还是我做错了什么?