Xcode中的嵌套聚合目标似乎无法正确传递设置

|| 我有一个项目,其中包含一个主要的Cocoa应用程序,一堆插件和几个辅助应用程序。助手应用程序具有自己的目标,并且我希望该应用程序无需插件即可构建,主应用程序具有其自己的目标(称为AppTarget),但是我通常将其全部构建在聚合目标中(称为TargetA)。我还有一个带有TargetA的聚合目标,另一个插件和一个附加的复制文件构建阶段(TargetB)。这一切都按预期工作。我正在尝试创建一个新的聚合目标TargetC,它包含TargetA,并且将具有(但尚未)运行外壳脚本构建阶段。 我遇到的问题是,我正在尝试使用GCC_PREPROCESSOR_DEFINITIONS#定义用于条件编译的符号TARGETC(#ifdef TARGETC ... #endif),但是它不包含在在构建日志中查看构建参数,并且应用程序的行为与构建日志匹配时-GCC_PREPROCESSOR_DEFINITIONS失败(我尝试TARGETC和TARGETC = 1。我尝试添加OTHER_CFLAGS用户定义的设置(将其设置为-DTARGETC = 1),但这也不起作用。 该文档说,“聚合目标”上的“用户定义的设置”会滴落到其子目标上,但似乎只下降了一个层次-TargetA可能会得到它,但AppTarget肯定不是。这是错误,预期行为还是我做错了什么?     
已邀请:
我找到了答案:这是预期的行为,而且,聚合目标根本不会将其用户设置传递给子目标;说明文件有误或我误读了。哪一种似乎违反了将GCC_PREPROCESSOR_DEFINITIONS作为可用于聚合目标的默认用户设置的目的,但实际上是无效的。 为了获得所需的行为,我正在构建一个单独的插件,该插件将添加到新的聚合目标中。我正在使用单例加载插件,该插件将保存对插件中主体类的引用(类型为
id <MyPluginProtocol>
),可以将其返回给提出要求的任何人。如果加载尝试失败(因为该插件不存在),它将返回nil,因此ѭ1代替
#ifdef TARGETC
。这意味着我并没有减少运输代码的大小,但是至少可以正常工作,而且这并不是浪费,因为我还有其他代码要插入到插件中(仅针对该目标) 。     

要回复问题请先登录注册