2011-08-07 74 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项目的产品(私有框架)。看起来好多了。该框架可以使用作者的设置进行编译,并且我们只收到很好打包的二进制文件。

相关问题