2009-09-24 86 views
2

我對此設置感到困惑(項目 - >編輯活動目標)。 根據SDK設置(模擬器vs設備),搜索路徑可能會有所不同。設備vs模擬器的iPhone xcode搜索路徑?

但是,如果我提供模擬器和設備路徑,讓我們說框架路徑,然後我得到鏈接器錯誤。但是,如果我只爲我選擇的任何SDK提供正確的路徑,那麼它看起來很好!

如何保持兩個路徑設置?目前,我必須剪切和粘貼基於我選擇構建的SDK的相應路徑。

謝謝!

回答

1

您應該設置兩個單獨的構建目標配置文件,一個用於sim和一個用於設備,而不是不斷編輯同一個配置文件。這就是目標。

+1

這不是目標的重點。這是不同平臺的相同目標。目標是「測試應用程序」與「主應用程序」與「磁盤映像」之類的內容。爲單個目標切換平臺並不是一種好方法。 – 2009-09-24 23:49:25

+0

好吧,我沒有使用自定義框架。除了標準的sqlite3庫之外,我正在使用標準框架。 因此......如果我不應該爲每個平臺使用單獨的目標,我該如何解決我的框架/ lib路徑問題?我有一個目標。如果我想爲模擬器構建,請從下拉列表中選擇Simulator 3.0。同樣,我選擇Device 3.0作爲設備。 – AlvinfromDiaspar 2009-09-25 01:23:56

6

你在說什麼樣的搜索路徑?系統搜索路徑會自動爲您處理,因此我認爲您的問題是一些自定義庫。

有兩個解決方案。您可以使用條件設置,也可以使用通用庫。我已經開始熱愛通用圖書館,但還沒有時間寫出完整的說明。他們的工作方式是爲模擬器和設備建立靜態庫,然後使用lipo將它們粘合在一起。然後,您可以在兩個平臺上使用相同的庫。我真的需要寫出完整的說明,因爲它非常有用。

還有兩種方法。首先,您可以使用條件設置。在xcconfig文件(見爲什麼要使用xcconfig文件my talk),你把這樣的事情:

LD_FLAGS[sdk=iphonesimulator*] = -lsasl2 

這只是爲模擬器連接SASL2。設置你所需要的標誌。另一種方法是變量代換:

HEADER_SEARCH_PATHS = "$(SRCROOT)/MyPackage/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include" 

這假定MyPackage是在項目的一個子目錄,它被內置到build目錄。它會查找,例如,其變量爲Debug-iphoneos

您也可以在構建窗格中同時執行上述兩項操作,但我真的建議人們遠離任何嚴重項目的構建窗格。變量替換在構建窗格中的作用相同,並且可以通過右鍵單擊設置來訪問條件設置。

1

如果你只使用

  • 項目頭
  • SDK框架頭
  • sqlite3的頭

那麼你的頭搜索路徑應該是。 Xcode自動爲您的項目頭文件,SDK框架和/usr/include/*.h提供搜索路徑,並調整正在使用的框架的搜索路徑。

擁有自定義標題搜索路徑的唯一原因是,當您引用的標題不在SDK中,位於SDK中的「深層」位置時(例如在/ usr/include的子目錄中或在掩埋框架中),或者在您的項目交叉引用的其他目標或項目中。

1

Rob已經暗示了這一點,但要澄清,這裏是你如何使用構建窗口來設置它。

在構建設置窗口中,選擇要修改的設置(如「框架搜索路徑」)。然後點擊左下角的齒輪,然後選擇「添加生成設置條件」。然後,您可以添加一個僅適用於iOS Simulator版本的值,另一個版本設置條件僅適用於設備版本。