2012-03-05 75 views
18

我一直在關注這個博客帖子:Adding unit tests to existing project.OCUnit測試到現有的iOS項目。 「LD:找不到文件」

我得到不過這個錯誤:

LD:未找到文件: 編譯/產品/調試 - 的iPhoneOS/MyApp.app/MyApp的 命令 /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang 失敗,退出代碼1

我有我的測試目標屬性,

捆綁裝載機= $(BUILT_PRODUCTS_DIR)/MyApp.app/MyApp

測試主機= $(BUNDLE_LOADER)

(兩者等同於:建立/調試-的iPhoneOS/MyApp的。 app/MyApp)

我瘋狂的猜測是那些變量沒有指向與編譯器相同的位置。 「build/Debug-iphoneos/...」vs「Build/Products/Debug-iphoneos/...」

對於這種猜測,我可能完全錯誤,但無論哪種方式,是否有人知道是什麼原因導致此錯誤或我將如何修復這些環境變量?

感謝您的幫助,

山姆

+1

也許你有一個區分大小寫的文件系統,並具有信件上的錯誤呢?我以前見過那個。 – fisk 2012-03-05 23:46:04

回答

18

深入到〜/資源庫/開發/ Xcode中/ DerivedData,下入您的項目。從那裏,按照Bundle Loader路徑。看看實際上有什麼。

現在看看你的Info.plist(或你的目標的信息設置)並尋找「可執行文件」或CFBundleExecutable。如果是${EXECUTABLE_NAME},請檢查您的目標的「產品名稱」設置。

+5

另一件要檢查的是你的單元測試目標的「Bundle Loader」設置。從Xcode 4項目創建時開始,應用程序可執行文件的路徑大部分都是硬編碼的。 (之後我改變了應用程序目標中的產品名稱,單元測試目標不知道它。) – zekel 2012-04-03 15:39:56

+0

我遇到了同樣的問題,並解決了這個問題。問題是我已經重命名了主目標,然後Xcode迷路了。 – Giovanni 2012-09-20 00:26:20

+0

CMD + Shift + K到「清潔工程」從不傷害任何人...... – zeroasterisk 2013-09-12 14:57:28

6

我遇到了同樣的問題 - 它沒有任何意義,因爲它使用的可執行文件的路徑確實存在。仔細查看編譯命令,發現加載器路徑上存在額外的空間,這是問題所在。

+5

謝謝!發現這一點爲我節省了一些時間。正在讓我發瘋 - 這是一個文件沒有反覆發現的捆綁加載器,顯然確實存在。在編譯設置編輯器中,$(BUILT_PRODUCTS_DIR)/ FSMTest.app/FSMTest與$(BUILT_PRODUCTS_DIR)/ FSMTest.app/FSMTest不一樣(即有一個預先佔用的空間)。蘋果公司是否沒有設計過一些檢查設置編輯器對話? – Cris 2012-09-14 23:07:07

+1

在類似的說明中,即使您的應用名稱中有空格,也不要在此處加雙引號。 – 2013-04-28 16:52:23

+1

要明確,不要把*任何*引號圍繞此。既不是雙引號也不是單引號,但沒有引號DID的工作。 – 2013-05-13 09:08:24

0

在Build Settings中尋找「搜索路徑」。 「框架搜索路徑」或其他路徑(如庫搜索路徑)下可能存在未知路徑

0

在創建項目後,您可能會更改應用程序的名稱。所以你的項目和應用程序的名稱是不同的。在路徑中,使用您的應用程序名稱,因爲它會顯示在iTunes Store上,而不是您的項目名稱。

0

我早些時候遇到了同樣的問題,我通過檢查我的單元測試目標的Build Settings - > Base SDK來解決這個問題,並根據您的項目類型(OSX或iOS)確保它是正確的。

0

在你podfile確保你已經包括你的測試爲目標

目標「YourAppNameTests」做 use_frameworks! pod'AFNetworking','2.6。0' 莢‘TYMProgressBarView’ 結束

這將自動添加鏈接二進制與圖書館框架

enter image description here