【问题标题】:Can't compile plcrashreporter in Xcode 4无法在 Xcode 4 中编译 plcrashreporter
【发布时间】:2011-07-01 00:54:47
【问题描述】:

在为设备编译时,我可以使用 plcrashreporter 项目页面上提供的预构建框架,但不能用于模拟器。我有同样的problem described here


我假设预构建的框架不支持模拟器的架构,所以我下载了 plcrashreporter 源。我打开了 Xcode 项目并选择了CrashReporter-iOS-Simulator > iPhone 4.3 Simulator 目标。当我尝试构建项目时,出现此错误:

libtool:未知选项字符“D”在:-D__IPHONE_OS_VERSION_MIN_REQUIRED=30000

当我尝试构建大多数其他目标(例如设备)时,我遇到了同样的错误。


我的下一步是尝试将源文件添加到我的项目中。我不再有上述问题;但是,当我尝试编译时出现此错误:

致命错误:找不到“crash_report.pb-c.h”文件 [2]
 #import "crash_report.pb-c.h"
         ^
产生 1 个错误。
命令 clang 失败,退出代码为 1

错误消息中提到的crash_report.pb-c.h文件根本不存在;我搜索了 plcrashreporter 源代码树和互联网。因此,我不得不假设该文件应该以某种方式生成,但我不知道如何生成。

(注释掉 PLCrashReport.m 中包含 crash_report.pb-c.h 的行会导致许多其他编译错误。)

【问题讨论】:

    标签: ios compiler-errors plcrashreporter


    【解决方案1】:

    您是正确的,该文件不正常存在,crash_report.pb-c.c 也不存在,这将是您在此之后的下一个错误。

    crash_report.pb.hcrash_report.pb.c 文件是在编译时通过构建规则生成的。您需要在构建过程中添加自定义脚本来制作它们。

    首先,确保项目的 plcrashreporter 文件夹中有 protoc-c (plcrashreporter-1.0/Dependencies/protobuf-2.0.3/bin/protoc-c)。他们把它埋得很深。这就是您的脚本将运行的内容。

    然后找到您的crash_report.proto 文件。这是protoc-c 将用于创建丢失文件的主要输入。您可以获取此目录并将其手动放入脚本中,或者您可以制定规则以在每个 *.proto 文件上运行脚本。我是后者。

    然后编辑您的构建规则以包含一个运行 protoc-c 的脚本,其中标志 --c_out="${DERIVED_FILES_DIR}" 和您的 crash_report.proto 文件作为两个输入,这会将 crash_report.pb-c.hcrash_report.pb-c.c 输出到与您所在的目录相同的目录中crash_report.proto 文件是,它应该已经可以在您的项目中访问。

    Xcode 4(及更高版本)中的构建规则位于项目目标的构建规则选项卡下。您在所有其他构建规则之前添加构建规则。这是我在 Xcode 中的样子:

    你可能不得不摆弄目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      相关资源
      最近更新 更多