无法在Xcode 4中编译plcrashreporter

tit*_*coy 5 compiler-errors ios plcrashreporter

我可以在编译设备时使用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源代码树和互联网.因此,我必须假设这个文件应该以某种方式生成,但我无法弄清楚如何.

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

And*_*rew 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文件上运行脚本.我做后者.

然后编辑您的构建规则,包括运行的脚本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中的样子:

这是我在Xcode中看起来的样子.

你可能不得不摆弄目录