xcode / iPhone的构建规则

Posted

技术标签:

【中文标题】xcode / iPhone的构建规则【英文标题】:build rules for xcode / iPhone 【发布时间】:2011-09-30 00:46:11 【问题描述】:

我将 facebook SDK 合并到更新中,我收到四个文件的编译器警告,在我的一个目标中,每个文件都收到两个类似这样的警告。

[WARN]警告:没有规则来处理架构 armv7 的 sourcecode.c.h 类型的文件“$(PROJECT_DIR)/APP_NAME/Facebook.h”

[WARN]警告:没有规则来处理架构 armv6 的 sourcecode.c.h 类型的文件“$(PROJECT_DIR)/APP_NAME/Facebook.h”

在另一个目标中,每个文件只生成一个警告,

[WARN]警告:没有规则来处理架构 i386 的 sourcecode.c.h 类型的文件“$(PROJECT_DIR)/APP_NAME/FBConnect.h”

在 facebook SDK 的文档中,他们告诉我将 i386 添加到构建设置中的有效架构中,但他们没有说明任何“构建规则”,奇怪的是我已经将相同的 facebook SDK 合并到另一个应用程序没有一个问题。我可以看到的唯一区别是该项目已经有两个目标,并且(每个)这些警告仅来自其中一个。谁能给我一个线索如何为这四个文件制定构建规则?我需要 armv6 和 armv7 和 i386 的构建规则吗?

除了 -info.plist 和 .pch 文件不同之外,构建设置完全相同。我应该补充一点,facebook 功能在模拟器上运行良好,但在使用任一构建目标的任何测试设备中都没有。

非常感谢。

【问题讨论】:

【参考方案1】:

假设您使用的是 Xcode 4,依赖项检查器可能会感到困惑,因为要编译的 C 文件列表中有 .h 文件。

所以.... 导航到目标的“构建阶段”选项卡。 (单击项目,然后单击目标名称,然后单击“构建阶段”选项卡。)

确保您没有将任何 .h 文件拖到“编译源”部分。

通常,在导入代码时,只是将全部内容拖入该部分,而没有意识到 .h 文件在技术上没有经过编译,并且依赖项检查器不够聪明,无法吐出更多有用的错误消息。

【讨论】:

非常感谢。我没有意识到列出的所有其他文件都只有 .m 文件。我在那里上了.h,删除它可以解决问题。干杯伙伴。 非常感谢,现在帮助了我【参考方案2】:

http://dhilipsiva.blogspot.in/2012/10/xcode-warning-no-rule-to-process-file.html

列表应该只有 .m 文件。我不知道我们是否可以将 .c 文件放入其中,但不应该有任何其他文件类型。我喜欢一些开发人员甚至将 javascript 文件拖到已编译的源代码中。如果您遇到同样的问题,您可能应该从已编译源列表中的 remove any non '.m' 文件。假设您在 Xcode4 上运行,这是您的操作方法。

打开项目目标的“构建阶段”选项卡。 (单击项目,然后单击目标的名称,然后单击“构建阶段”选项卡)。 在已编译的源代码部分,请确保您没有 .m 文件以外的任何文件。

黑客愉快。

【讨论】:

+1 表示应删除任何非 .m 文件。我被一个 .c 文件困住了 +1 表示“删除任何非 '.m'”的粗体短语。我使用 ZipArchive 解压缩下载的文件。所有头文件都是在运行时编译的。按照描述删除了头文件,并且 8 个警告消失了。

以上是关于xcode / iPhone的构建规则的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:“构建并运行”而不重新启动 iPhone 模拟器

如何通过 xCode 构建设置在 iPhone 上预设地理位置?

Xcode 6 构建应用程序,但升级 iPhone 后不会在 iPhone 上自动启动

为 iPhone 设备构建时 xcode 静态库链接错误

XCode 构建设置以提高性能 - iPhone 应用程序

如何使用当前的 Xcode 为 iPhone OS 3.1.2 构建应用程序?