无法在Xcode 4中编译plcrashreporter

5
我可以在编译设备时使用 plcrashreporter 项目页面提供的预构建框架,但不能用于模拟器。 我遇到了与此处描述的问题相同的问题。
我认为预构建框架不支持模拟器的体系结构,因此我下载了 plcrashreporter 源代码。 我打开了 Xcode 项目,并选择了 CrashReporter-iOS-Simulator > iPhone 4.3 Simulator 目标。 当我尝试构建项目时,出现以下错误:
libtool: unknown option character `D' in: -D__IPHONE_OS_VERSION_MIN_REQUIRED=30000
当我尝试构建大多数其他目标(例如设备)时,也会出现相同的错误。
我的下一步是尝试将源文件添加到我的项目中。 我不再有上述问题; 但是,在尝试编译时,我会收到以下错误:
fatal error: 'crash_report.pb-c.h' file not found [2]
 #import "crash_report.pb-c.h"
         ^
1 error generated.
Command clang failed with exit code 1
在错误消息中提到的 crash_report.pb-c.h 文件不存在; 我已经搜索了 plcrashreporter 源树和互联网。 因此,我必须假设该文件应该以某种方式生成,但我无法弄清楚如何生成。
(在 PLCrashReport.m 中注释掉包含 crash_report.pb-c.h 的行会导致许多其他编译错误。)
1个回答

5
您说得对,文件通常不存在,接下来是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文件上运行脚本。 我选择后者。
然后编辑您的构建规则,包括一个使用标志--c_out =“ $ {DERIVED_FILES_DIR}”和您的crash_report.proto文件作为两个输入的脚本,这将输出crash_report.pb-c.hcrash_report.pb-c.c 到与您的crash_report.proto文件所在的目录相同的目录中,这应该已经在您的项目中可以访问。
Xcode 4(及更高版本)中的构建规则位于项目目标的构建规则选项卡下。 您可以在所有其他构建规则之前添加一个构建规则。 这是我在Xcode中的样子:
Here's what mine looks like in Xcode.
您可能需要调整目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接