Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode don'中的嵌套聚合目标;似乎无法正确通过设置_Xcode_Preprocessor_Nested_Targets - Fatal编程技术网

Xcode don'中的嵌套聚合目标;似乎无法正确通过设置

Xcode don'中的嵌套聚合目标;似乎无法正确通过设置,xcode,preprocessor,nested,targets,Xcode,Preprocessor,Nested,Targets,我有一个项目,有一个主要的Cocoa应用程序、一堆插件和几个助手应用程序。助手应用程序有自己的目标,由于我希望应用程序在没有插件的情况下可以构建,主应用程序有自己的目标(称之为AppTarget),但我通常将其全部构建在一个聚合目标中(称之为TargetA)。我还有另一个使用TargetA的聚合目标、另一个插件和一个额外的复制文件构建阶段(TargetB)。这一切都按预期进行。我正在尝试创建一个新的聚合目标Target,targetetc,它包含TargetA,并且将有(但还没有)一个运行She

我有一个项目,有一个主要的Cocoa应用程序、一堆插件和几个助手应用程序。助手应用程序有自己的目标,由于我希望应用程序在没有插件的情况下可以构建,主应用程序有自己的目标(称之为AppTarget),但我通常将其全部构建在一个聚合目标中(称之为TargetA)。我还有另一个使用TargetA的聚合目标、另一个插件和一个额外的复制文件构建阶段(TargetB)。这一切都按预期进行。我正在尝试创建一个新的聚合目标Target,targetetc,它包含TargetA,并且将有(但还没有)一个运行Shell脚本构建阶段

我遇到的问题是,我试图使用GCC#U预处理器#U定义来#定义一个符号,TARGETC,用于条件编译(#ifdef TARGETC…#endif),但当我查看构建日志时,它没有包含在构建参数中,并且应用程序的行为与构建日志匹配——GCC#U预处理器#U定义失败(我尝试了TARGETC和TARGETC=1。我尝试添加另一个用户定义的设置(将其设置为-DTARGETC=1),但也不起作用


文档中说,聚合目标上的用户定义设置会向下延伸到它们的子目标,但这似乎只会向下延伸一个层次-TargetA可能会得到它,但AppTarget肯定不会。这是一个错误、预期的行为,还是我做错了什么?

我找到了答案:这是预期的行为,而且,聚合目标根本不会将其用户设置传递给子目标;要么是文档错误,要么是我误读了它。这似乎有点违背了将GCC_预处理器_定义作为聚合目标可用的默认用户设置的目的,但这就是生活


为了获得我想要的行为,我正在构建一个单独的插件,该插件将添加到新的聚合目标。我正在使用一个单例加载插件,该插件将包含对插件中主体类的引用(键入为
id
),可以返回给任何请求的人。如果加载尝试失败(因为插件不存在),它将返回nil,因此
如果(nil!=[[PluginLoader sharedLoader]plugin])
取代
#ifdef targetetc
。这意味着我不能减少发送代码的大小,但至少它可以工作,而且这不是一种浪费,因为我有其他代码将进入插件(只是为了这个目标)无论如何。

我找到了答案:这是预期的行为,而且,聚合目标根本不会将其用户设置传递给子目标;要么是文档错误,要么是我误读了。这似乎有点违背了将GCC_预处理器_定义作为聚合目标可用的默认用户设置的目的,但c“这就是生活


为了获得我想要的行为,我正在构建一个单独的插件,该插件将添加到新的聚合目标。我正在使用一个单例加载插件,该插件将包含对插件中主体类的引用(键入为
id
),可以返回给任何请求的人。如果加载尝试失败(因为插件不存在),它将返回nil,因此
如果(nil!=[[PluginLoader sharedLoader]plugin])
取代
#ifdef targetetc
。这意味着我不能减少发送代码的大小,但至少它可以工作,而且这不是一种浪费,因为我有其他代码将进入插件(只是为了这个目标)无论如何。

我应该提到,这是雪豹10.6.7上的Xcode 3.2.6。我应该提到,这是雪豹10.6.7上的Xcode 3.2.6。