【问题标题】:Target Membership grayed out ( disabled )目标成员资格灰显(禁用)
【发布时间】:2010-01-19 00:07:31
【问题描述】:

我正在尝试为我的 iphone 应用程序创建一个新的单元测试构建目标。我遇到的问题是我的源代码“组”的 Target Membership 选项是灰色的。

我确实删除了原来的“Classes”文件夹,并创建了具有实际磁盘结构的新“SourceCode”文件夹(感谢 xcode)。我将它作为一个组导入,而不是一个文件夹。它自动添加到我的标准构建目标的编译源中,但我无法将其添加或拖动到我的新目标中。

有什么想法吗?

alt text http://img.skitch.com/20100118-mhurmqc33ecaq4xq3y2e5k3hs4.jpg

【问题讨论】:

  • jpg 链接已失效

标签: iphone objective-c xcode target


【解决方案1】:

这发生在我的 Xcode 10.2 和一个相当老的项目上。我的原因是在目标设置中,构建阶段中的目标缺少“标题”项。单击 +,然后选择“新标题阶段”。现在您可以正确地将标头添加到目标。

【讨论】:

  • 谢谢。我遇到了同样的问题,但是对于本地化文件,我只需要创建一个空的 Copy Bundle Resources 部分,然后启用目标成员资格复选框,以便我可以单击它。
  • @Daniel “空副本包”是什么意思
【解决方案2】:

首先,您的源代码不会进入单元测试目标。只有单元测试源本身应该进入该目标。其次,编译源构建阶段不能构建一个组,只能构建单个文件。所以我不相信即使你的组在目标中,它也处于正确的构建阶段,或者它的源代码将被编译。

取消选中目标以从中删除组,然后选择源文件并将它们拖到目标上。

【讨论】:

    【解决方案3】:

    cdespinosa 的答案是正确的,但并不真正正确。源代码实际上确实进入了单元测试目标,但您只需要包含测试涵盖的源代码。

    我想通了,问题实际上是,如果一个组包含任何不能包含的文件(例如头文件),信息对话框不够聪明,不能只处理这些文件,只会把你锁在外面。您必须手动选择每个 .m 文件,即使您想在组中包含所有内容。如果您有一个庞大的项目,我建议您创建一个“智能组”(而不是 xcode 的普通“哑组”),它可以让您只过滤 .m 文件。

    你为什么问?为什么 xcode 能够在您导入一堆文件时解决这个问题,其中一些文件无法包含在构建中,但无法对现有文件进行相同的区分?好问题。 xcode 课程的标准杆,imo。

    【讨论】:

    • 您最后一个问题的技术答案是拖放是通过迭代完成的,而检查器是基于绑定的,检查器仅验证所有元素都具有有效键路径的数组。至于单元测试,您是对的,iPhone 应用程序单元测试要求您将应用程序源添加到目标。 Mac 单元测试使用捆绑注入,并且不需要单元测试目标中的应用程序源。
    • 感谢您澄清 cdespinosa。我想从功能的角度来看这是有道理的,但我仍然认为苹果在这种情况下为了技术正确性而牺牲了可用性。如果我检查一个文件夹是否包含在目标中,我显然不希望它包含无法包含的内容,并且对此很聪明。你的观点没有错,只是我对苹果的抱怨。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2012-01-08
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多