2013-06-04 39 views
1

我想分享多個Xcode項目之間的代碼。我跟着一個項目中創建一個靜態庫子項目蘋果手記:iOS靜態庫作爲具有自定義生成配置的項目的子項目?

http://developer.apple.com/library/ios/technotes/iOSStaticLibraries/iOSStaticLibraries.pdf

這個偉大的工程!但是,當我使用我自己的項目遵循相同的指示時,我發現我在靜態庫中公開的頭文件無法通過我的應用程序中的代碼找到。

這是因爲我的項目使用自定義構建配置。我有一個用於Ad Hoc構建,App Store構建等。

例如:當我使用名爲「Ad Hoc」的構建配置構建項目時,靜態庫子項目構建發佈配置並將其公共構造的標題複製到一個名爲「Release」的文件夾。然後主項目無法構建,抱怨說它找不到從靜態庫導入的標題。這些錯誤在Issue Navigator中顯示爲:Lexical或Preprocessor問題

所以我的問題是:如何將靜態庫設置爲具有構建庫的項目的子項目?

+0

你釋放庫本身我的項目模板?如果不是爲什麼公開標題或將它們複製到任何地方?當然,它們不會在構建類型之間進行更改? – trojanfoe

+1

作爲一個問題解決步驟,嘗試更簡單地使用「include」來更改子項目靜態庫Copy Files面板中的「include/$ {PRODUCT_NAME}」,然後查看是否有效。它應該和前者一起工作良好,並且它可以讓人們在瀏覽產品目錄時保持一切整潔,但如果您一直在進行配置操作,則沒有必要,並且可能會導致問題。 – TheBasicMind

+0

@trojanfoe我沒有發佈圖書館本身。它將被納入我們所有的項目中。目前,頭文件將被複制到「產品目錄」目標中的/ $ {PRODUCT_NAME}。你知道我應該把它複製到哪裏,這樣我的應用程序可以在任何構建配置中看到它們嗎? – derekvanvliet

回答

4

我在製作自定義項目模板時遇到了這個問題。

將「$(BUILD_DIR)/ Release $(EFFECTIVE_PLATFORM_NAME)」添加到「標題搜索路徑」和「用戶標題搜索路徑」中,以查看您使用的任何生成配置存檔並確保它設置爲「遞歸」而不是「非遞歸」。這會告訴您的應用程序在您的編譯目錄中的「Release」目錄中搜索頭文件。

問題是,對於Debug版本,所有頭文件都被複制到派生數據下的單個目錄中。但是,當您將文件複製到以生成配置命名的文件夾時。因此,當您執行「Ad Hoc」構建時,所有文件將被複制到「Ad Hoc」文件夾,但您的靜態庫文件將被複制到「Release」文件夾中。這些文件夾並排坐在一起,除非被告知這樣做,否則只能在「Ad Hoc」文件夾下搜索頭文件。

這裏是GitHub上提交了,我解決了這一問題 https://github.com/reidmain/Xcode-5-Project-Templates/commit/e465aa3d5c82118cc0d5af3a7f6f094d86b1ec63

相關問題