簡體   English   中英

測試目標Xcode 5的XCTest構建錯誤:

[英]XCTest build errors for test target Xcode 5:

我已經為單元測試設置了一個XCode 5 iOS 7項目。

當然,設置單元測試花了我很長時間,以至於我正在努力保持它的價值。 在這個錯誤上掙扎了好幾個小時:

ld: building for iOS Simulator, but linking against dylib built for MacOSX file
'/Applications/Xcode5-DP5.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' 
for architecture i386

關於如何解決的任何想法?

檢查測試目標設置中的框架搜索路徑。 添加XCTest Framework時,這些可能會被破壞。

將XCTest添加到我的一個項目中會在路徑前面加上“/”,導致它們找不到正確的版本。

上述答案都不適合我。 我沒有找到答案, 在這里由蒂姆·麥克法蘭留下評論。

對於在應用程序中查找類的鏈接器錯誤...在應用程序目標中將“默認隱藏的符號”構建設置設置為“否”。 這使您的所有應用程序類自動可用於您的測試目標...

所以,這意味着:

  • Project Navigator>選擇您的項目
  • 目標>選擇您的應用程序(不是測試)
  • 構建設置>搜索“默認隱藏的符號”
  • “默認隱藏的符號”>將其從“是”更改為“否”

我遇到過同樣的問題; 問題(對我來說,至少)是FRAMEWORKS_SEARCH_PATHS構建設置在主開發者框架文件夾之后列出了SDK frameworks文件夾。

Xcode中包含的框架有三個獨立的構建:一個用於OS X,一個用於iOS(設備),第三個用於iOS模擬器。 OS X構建位於主開發人員文件夾中,其他兩個位於其各自的平台文件夾下。 這里的問題是,如果您沒有指定首先搜索SDK文件夾(在平台文件夾中),Xcode(或者更准確地說,鏈接器)將首先找到OS X構建並產生您看到的錯誤。

解決方案很簡單,放:

FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/Developer/Library/Frameworks $(inherited)

在您的構建設置中。 如果您將構建設置放在項目文件中(我不推薦它,但這是另一天的另一個問題),它只是命名為“框架搜索路徑”。

注意:有時Xcode的速度有點慢; 你可能需要刪除你的build文件夾(不僅僅是干凈)才能生效。

將測試從SenTestCase轉換為XCTestCase后遇到同樣的問題。 恢復框架dirs修復問題:

"$(SDKROOT)/Developer/Library/Frameworks" (non-recursive)
"$(DEVELOPER_LIBRARY_DIR)/Frameworks" (non-recursive)

所以,對我來說,在這篇文章中嘗試了其他所有內容后,我所遺漏的是:

其他鏈接器標志:

-framework XCTest

我目前正在使用Xcode 6.0(使用iOS 8 SDK),所以我很驚訝“編輯>重構>轉換為XCTest ...”選項不會自動添加。

我在xcode 5中添加sentestingkit框架時遇到了問題。 這些設置用於解決鏈接器問題。 搜索路徑

添加另一個文件進行測試后,我遇到了這個問題。 如果您使用(CMD + N)執行此操作,請確保僅定位測試包(即'AppNameTests')。

我想只有這些.xctest包才能訪問XCTest Framework。

重命名我的目標名稱並移動后,我遇到了同樣的問題。 事實證明,我的測試是我的主要目標的一部分。 確保您的所有測試文件僅屬於您的測試目標。

只需選擇.m文件,確保打開右側窗格。

XCode測試目標圖像

當嘗試使用7.0之前的SDK構建基於XCTTest的單元測試時,我遇到了同樣的問題。 當我選擇7.0作為我的Base SDK時,那種鏈接錯誤就消失了。

有一個相同的問題,但最終有一個略有不同的解決方案。

選擇XCTest.framework並確保僅在Target Membership下檢查您的測試文件夾。

目標會員

確保YourProjectTests目標的搜索框架路徑( FRAMEWORK_SEARCH_PATHS )包含路徑$(SDKROOT)/Developer/Library/Frameworks ,並且這個路徑在$(inherited)之前列出。

就我而言,兩條路徑都存在,但$(inherited)是第一條路徑。

感謝Apple Mach-O鏈接器上的https://stackoverflow.com/users/181947/brian-clear(id )警告:為MacOSX構建,但是為iOS構建的dylib鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM