2012-08-05 116 views
4

我有一個Xcode項目。當在Xcode交互方式,我能夠使用Ad_Hoc_Distribution配置來運行/編譯/存檔,但是當我運行:無法使用命令行構建iOS項目,但通過Xcode界面很好

/usr/bin/xcodebuild -configuration Ad_Hoc_Distribution clean build 

我的項目中,我得到一個錯誤:

/Users/esg/Documents/app-ios/testapp/testapp/AppDelegate.h:14:9: fatal error: 'RestKit/RestKit.h' file not found 
#import <RestKit/RestKit.h> 
    ^
1 error generated. 

什麼會導致這當它通過接口工作時從命令行失敗?

回答

2

我的團隊遇到了同樣的問題。從Xcode 4.3.2升級到4.4.1之後,曾經正確找到的文件不再執行。

通過比較xcodebuild與Xcode自己的構建日誌的輸出,然後與我們的Xcode 4.3.2構建日誌進行比較,我們發現xcodebuild和Xcode IDE不再使用相同的頭依賴關係進行構建。當xcodebuild運行4.4.1版本時,它使用不正確的基本目錄作爲包含文件,其中不包括導向.xcodeproj目錄的整個當前路徑。文件夾路徑中的最後兩個目錄節點似乎被截斷。

但從Xcode IDE建設工作正常。

我們合作解決此問題,通過添加正確的頭路,因爲Xcode的報告它,作爲一個額外的頭依賴性:

corporate info redacted to protect, well, me

$(SRCROOT)是什麼,似乎當xcodebuild聯編是不正確的解釋採用。它應該包含我在第二行插入的兩個子目錄。

我只能斷定在xcode/xcodebuild交互中存在一個成熟而辛辣的新bug,但是您可以修復您的頭文件依賴關係,至少可以編譯內容。

+1

感謝您的信息。這與我解決它的方式非常相似 - 基本上我手動編輯了pbxproj文件,每當找到應該包含的其他路徑時,都會添加所需的標頭搜索路徑。它現在有效。 – Eric 2012-08-10 13:56:23

+0

我們確定這是由於在我們的xcodebuild命令行上使用了SRCROOT =指令。我們把它拿出來,我們的構建停止失敗。爲什麼他們使用Xcode 4.3.2是未知的。 SRCROOT =的值似乎是正確的,但我們只是解決了這個問題。 – 2012-08-10 21:53:40

1

查看我自己的問題。

xcodebuild header files not found in ReskIt

我解決它通過改變什麼,但通過增加一個工作空間和方案,並用它來建立。所有的頭文件設置與爲Xcode GUI進行設置時相同。

相關問題