2011-08-07 109 views
6

我知道這是一個非常簡單的問題,但我一直在努力。我已經閱讀了一些主題,但仍然可以找到答案。添加一個簡單的庫到一個xcode 4項目

我想將這個DDMathParser庫添加到我現有的項目中。數學解析器文檔狀態

「只需將」DDMathParser「子文件夾複製到您的項目#import」DDMathParser.h「中,即可順利完成。」

我在我的項目中添加了子文件夾,並在我的第一個視圖控制器中添加了頭文件「#import」DDMathParser.h。起初,Xcode聲明無法找到該文件。並改變了我的頭,包括

#import "DDMathParser/DDMathParser.h" 

Xcode中似乎找到該文件夾​​和頭文件的文件夾,但是當我從文件運行測試,如

NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); 

我收到錯誤「主題1 :程序收到的sginal:「SIGABRT」'我可以在DDMathPar中看到系統示例文件,有一個目標,我想知道這是否是我的問題。

爲了澄清我想向DDMathParser庫添加到一個簡單的視圖控制器的問題,這樣做將不勝感激運行staement NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); 任何幫助/澄清。

回答

12

首先,請不要通過子文件夾副本將DDMathParser代碼添加到項目中。這樣做會使得輕鬆獲取代碼的未來更新變得非常痛苦,並且通常不是將外部代碼包含在項目中的好方法。

相反,你應該添加git repo作爲你項目的子模塊(你使用的是git,對嗎?)並將相關文件導入到你的項目中。以下是一步一步的解決方案:

  1. 將DDMathParser回購作爲子模塊添加到您的項目中。 Here are instructions關於如何在項目目錄中添加子模塊。看看這個答案,但爲了簡潔起見,您將從終端在您的項目根目錄中發出以下命令:git submodule add https://github.com/davedelong/DDMathParser.git External/DDMathParser。這將爲您的項目根目錄創建一個名爲External的新子目錄,並且將在外部複製DDMathParser項目。
  2. 將DDMathParser目錄添加到您的項目中。它將在<Your Root Project Dir>/External/DDMathParser/DDMathParser目錄中找到。請務必勾選「添加到目標」複選框並選擇而不是以檢查「複製項目」複選框。
  3. #import "DDMathParser.h"添加到您的視圖控制器。

DDMathParser現在應該可以按照您的預期工作。如果作者提出代碼更新,您可以從終端發出以下命令以從github獲取最新更新:git submodule update

注:我從零開始創建了一個新項目,遵循這些步驟幷包含您的NSLog()示例以確保沒有任何問題。

+0

感謝您的回覆您的帖子是非常有幫助的,但我仍然收到錯誤。我按照您的指示一步一步,並能夠將代碼下載到外部目錄,將文件添加到項目並添加頭沒有問題,但是當我運行我的測試程序時,我得到15錯誤全部源於DDMathEvaluator.m和_DDDEcimalFunctions .M。我似乎無法弄清楚我和你做了什麼不同。如果您有任何建議,請告訴我,非常感謝您的幫助! – user813611

+0

嗯......你是否確定在你將DDMathParser目錄添加到你的項目中時選擇了你的目標?如果您選擇DDMathEvaluator.m,您是否可以確認它已包含在您的目標中?正如我所說的,當我在輸入幫助信息的時候,我正在一步一步地走過去,它運行良好。作爲一個測試,你可以從頭開始創建一個新項目並嘗試一下嗎? – memmons

+0

再次感謝Harkonian的回覆,1,我創建了一個名爲mathParserTest的基於app的應用程序,使用git repository 2.我使用終端命令下載項目根文件夾中的DDMathParser 3.我選擇FILE-> Add files to「 mathParserTest「,然後選擇Dir>/External/DDMathParser/DDMathParser,將項目複製到組中,取消選中所有添加的文件夾創建組,並添加到目標mathParserTest選中。目標在其旁邊具有名稱爲mathParserTest的IB圖標。包含文件的文件夾導入到項目中,看起來很好,直到我編譯。 – user813611

0

我也按照這些步驟操作,直到可以使其工作。建議的方法有一些缺陷。

  1. 由於傢伙我有之前---你只在 DDMathParser來源帶來,並把它們編譯成你的目標的一部分。這將綁定 您可以使用與DDMathParser的作者相同的生成設置,SDK版本和部署系統版本 。示例:

    • 沒有在我的目標中使用ARC ---現在我必須。
    • 我打算在我的項目中使用MacOS 10.8 SDK(出於許多原因),但在一個DDMathParser源代碼中出現了奇怪的ARC編譯錯誤,僅當我切換到SDK 10.9(作者在其示例和文檔中使用的版本)。
    • 我必須爲MacOS 10.8提供我的應用程序及以上,現在我不確定它會工作
  2. 我不知道如果我把我的父母回購服務器會發生什麼,和另一位朋友拉它。他會自動收到DDMathParser回購嗎?怎麼樣?他必須能夠訪問它!該計劃對我來說似乎不完整。

我會建議,以幫助作者在包裝自己DDMathParser作爲一個框架,然後你就可以導入DDMAthParser的項目文件到你的項目---沒有來源,並且簡單地聯繫起來反對DDMathParser項目的產品(私有框架)。看起來好多了。該框架可以使用作者的設置進行編譯,並且我們只收到很好打包的二進制文件。

相關問題