2011-06-01 81 views
8

我在XCode4中有一個項目與一個依賴項目(恰好是Kal項目)。XCode4沒有鏈接新編譯的靜態庫(從屬)項目

當我在Xcode更新卡爾項目,然後運行父項目,(這種情況在者均基於同一工作空間),它看起來編譯XCode的修改後的卡爾項目,但不會鏈接到新編譯libKal.a文件。

我正在運行其中一個默認父項目方案。從日誌中我可以看出,在運行時,它在構建父項目之前構建依賴項目。但是,我可以讓父項目使用我的更改的唯一方法是,如果我重新添加libKal.a產品作爲要鏈接的庫,在父目標的「鏈接二進制與庫」部分下。

也許線索: - 我使用LLVM, - 我對-all_load標記。

+1

你可能碰到了這個問題: http://stackoverflow.com/questions/6204364/changing-the-source-of-a-static-library-needs-clean-and-build-in- Xcode的-4 – LearnCocos2D 2011-10-23 21:49:55

回答

0

如果你嘗試什麼:

  • 清潔
  • 重建

這通常在這種情況下,工作對我來說...

0

檢查你的計劃。對於依賴於庫的應用程序,確保每次都建立依賴關係。我已閱讀該計劃應該已經有此更新,但有時它不。你可以在這裏看到一個例子...

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/#configuring_the_projects_scheme

基本上爲應用程序編輯的計劃,然後單擊生成項目左上角。您將看到作爲該版本的一部分運行的每個目標。如果你沒有看到依賴的目標,你可以添加它。然後確保您的應用程序最後列出,以便首先創建所有依賴關係。

0

我可以建議你爲你的圖書館和主要項目使用單個工作區。在主項目方案中,在main(在主目標之前編譯庫)之前添加庫目標,並設置標題搜索路徑。

0

簡化你的生活並使用cocoaPods。這是一個很好的tutorial。 CocoaPods會自動創建一個工作空間,包含您項目所需的所有庫。我曾經在庫中遇到類似這樣的問題,現在我只使用Pods。

0

根據您的項目設置方式,Xcode不一定會重新鏈接相關庫。爲了讓它每次鏈接,您需要將項目作爲目標依賴項添加到您希望鏈接庫的目標的構建階段。

假設您有一個名爲Test的工作區,並且兩個項目名稱分別爲TestApplication和TestLibrary。如果您將它們作爲獨立項目包含在工作區中,則可以將TestLibrary.a添加到TestApplication作爲TestApplication目標構建階段的「鏈接二進制文件庫」部分中的庫,但您不會能夠將其添加到「目標依賴項」部分。

現在,如果您將TestLibrary移動到TestAppliction的子項目(只需將其拖到項目導航器中的項目中),您就可以將TestLibrary添加爲與AND鏈接爲一個目標的庫TestApplication的依賴關係。將它作爲目標依賴項添加可確保Xcode將構建(如有必要)並鏈接庫。

對不起,但我已經有一段時間了,因爲我想通過這種方式設置自己的項目,所以我不記得圖書館沒有鏈接的情況。我認爲這是一個單獨的項目,Xcode不會檢查它是否需要重新構建,而只是與以前的庫鏈接。我記得儘管我的工作直到我明白爲止,只是簡單地觸摸需要構建的項目中的文件。我有一個名爲touchMe的文件,如果我在構建之前會碰到的庫項目包含在編譯源中。您可以做同樣的事情,看看是否可以解決您的問題,如果將庫項目移動到依賴項目不是您的選擇。

希望有所幫助。