2012-03-02 104 views
1

因此,這裏的勺子:iOS版 - 包括在其他Xcode項目靜態庫項目...頭髮出

我有建立一個標準庫的Xcode項目。這個標準庫產生一個「.a」文件,以及一些頭文件,這些頭文件對於使用所述lib的任何客戶端來說都需要是可見的。

的標準庫建立一組目錄:

/builds/foo/bar/build/ 

它看起來像這樣在我建庫:

/builds/foo/bar/build/ 
    lib.a 
    headers/ 
     head1.h 
     head2.h 
     head3.h 

我有一個需要消耗該庫中的客戶端應用程序。我需要重新構建客戶端應用程序的每個版本的標準庫,所以我按如下方式設置它:

我創建了一個客戶端應用程序,將標準lib .xcodeproj文件添加到它,並將其作爲直接依賴。我在「Link Binary with Library」一節中適當地鏈接了它。然後,按照標準的西裝,我把它的客戶端應用程序來搜索在以下位置的頭文件:

/builds/foo/bar/build/headers/ 

而這個工程...排序的。如果我刪除上面列出的目錄並嘗試重建,它將失敗,因爲它無法找到頭文件。

「好的,杜!你刪除了包含頭文件的目錄!」。

確實,但客戶端構建的方式是在客戶端應用程序構建之前將靜態庫編譯並放置在/ builds/foo/bar/build目錄(包括頭文件)中。它應該找到這些頭文件。它們在客戶端編譯之前就已經存在,而'Header Search Path'正確設置。

正如我之前所說,如果我刪除包含lib和頭文件的目錄,並嘗試客戶端應用程序的一個乾淨的版本,它會失敗。雖然構建失敗,但/ builds/foo/bar/build目錄被創建並填充,這意味着所有後續構建和清除都會成功。

任何想法如何解決這個問題?

+0

故障信息究竟是什麼? – lawicko 2012-03-02 23:04:00

+0

詞法或預處理器問題:找不到「head1.h」文件。 顯然,這個檢查階段是在編譯直接依賴關係之前發生的......否則,這不是問題。 – Jeff 2012-03-02 23:33:45

+0

那麼,直接依賴關係**必須在任何檢查發生之前做好準備,檢查一下你是否犯了錯誤[這裏](http://stackoverflow.com/questions/3429031/header-search-paths-vs-用戶報頭搜索路徑功能於xcode的)。 – lawicko 2012-03-03 09:43:12

回答

0

通常Xcode 4會正確處理依賴項目的構建;但我發現情況並非如此。您可以嘗試編輯該方案並明確靜態庫依賴關係。

相關問題