2008-09-17 115 views
4

我是一個有經驗的VS.NET用戶,並試圖在Xcode 3.1.1上運行。
這是我想要實現的:Xcode 3.1.1和靜態庫

我想要一個靜態庫(「Lib」)擁有自己的xcodeproj文件。我想要一個可執行應用程序(「App」),它使用Lib來引用Lib的xcodeproj文件,以便對Lib的更改可以使應用程序重新鏈接。理想情況下,我希望能夠在應用程序的Xcode工作區中編輯Lib的源文件,所以我不需要隨時做任何改變。

我從聯機幫助中發現,我可以簡單地將靜態lib xcodeproj拖動到我的應用程序項目中,並獲取參考。我看到,一旦我的靜態庫xcodeproj在我的應用程序的項目中,我可以簡單地將其拖到應用程序的目標,並瞭解應用程序依賴於Lib。這似乎是正確的道路,但事情並不像我想要的那樣工作。

這裏是我的問題:

  1. 看來,僅僅擁有應用依賴於庫不會造成應用程序與庫鏈接。似乎我必須將LibLib.a從Lib文件夾中顯式拖入應用程序的「Link Binary With Libraries」構建階段。在VS.NET中,只需將項目指定爲解決方案依賴項即可將其添加到鏈接行中。我只是想確保我沒有失去任何東西。

  2. 當我在Xcode中打開App並將Lib.xcodeproj拖入它時,我沒有得到Lib的源文件。我只在lib.xcodeproj文件夾下獲得libLib.a。在VS.NET中,我可以在那裏編輯Lib的源文件並重新編譯它等等,但是在Xcode中使用這種方法時,對lib.cpp所做的更改不會導致重建App時重新生成Lib。理想情況下,當我將Lib.xcodeproj拖放到App中時,我會得到Lib的所有源文件和目標。有沒有辦法做到這一點?

在此先感謝您的任何答覆!

回答

9

您說的目標A取決於目標B(無論是在同一個項目中還是跨項目)是否正確而不是會導致目標A與目標B鏈接。你需要明確地指定它們;這是因爲他們是不同的概念,你可能有目標之間的依賴關係,你要鏈接到對方 - 例如,通過獲取目標C建成並作爲一部分的命令行工具對於目標A.

而且生成過程中,你是正確的,從一個項目中引用項目B就不會讓你看到在項目A的窗口B項目的源代碼。這是因爲Xcode沒有與Visual Studio和Eclipse相同的「工作空間」模型;你上面提到的存在「一個工作區包含項目A」,但Xcode並沒有真正有這樣的事情,只是一個窗口代表項目答:

+1

嘿克里斯,非常感謝短,但詳細的解答。我很感激! – 2008-09-18 15:23:13

4

打開應用程序項目。右鍵單擊App目標並選擇「獲取信息」。然後轉到「常規選項卡」並找到「直接依賴關係」。點擊(+)(加號)按鈕添加直接依賴關係。 Lib.xcodeproj應該出現在你的可能列表中。從該列表中選擇Lib目標。

這應該完成,當你建立App目標時,Lib項目必須建立(或重建)。

(編輯我現在自己的崗位。我知道我在說這個問題一無所知點數2。我其實還在想着號碼2.我不知道這是可能的或沒有。)

0

我我也是一個相當新的Xcode用戶。我知道的大部分知識都是從James Bucanek的一本Xcode書中學到的(ISBN 047175479x)。這是一本爲X/2.2編寫的較舊的書,但我發現它幾乎全部適用於我今天,而且我目前使用Xcode 3.1

如果您是感興趣。

0

我也是新手到Xcode 3.1,只是玩提到你的問題,發現你的第二個問題沒有問題。任何應用程序用於編輯的依賴庫的源代碼,你的主要項目將重建的依賴目標。我檢查了:

  1. 通過記事本應用程序編輯您的應用程序所依賴的庫的源文件。
  2. 選擇依賴庫項目引用,鼠標右鍵單擊,然後選擇「打開方式查找器」,然後選擇想要的源文件和編輯它。

一切運作良好。