2011-07-01 116 views
5

編譯設備時,我可以使用plcrashreporter項目頁面上提供的預構建框架,但不能用於模擬器。我有相同的problem described here無法在Xcode 4中編譯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包括在許多其他編譯錯誤的結果。)

回答

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:

Here's what mine looks like in Xcode.

你可能要與目錄撥弄