我正在为我们的客户在Mac OS X上创建一个静态库,以及一个用于测试静态库的小型cmd行应用程序。 cmd行项目有2个额外的库搜索路径,这意味着我在发布模式下链接到Debug版本并且几乎疯了,所以我试图摆脱这两个路径,但我找不到它们被指定的位置。我正在查看项目信息,但事实证明它们是在目标信息中指定的。
我不明白这个区别?!为什么有2套设置,基本相同?!有人可以赐教吗?
答案 0 :(得分:40)
项目可以包含多个目标。例如,我编写的应用程序有四个 - 应用程序本身,快速查看插件,框架和包含可以动态加载的特定于Mac OS 10.6的功能的包。
项目设置适用于项目中的每个目标。然后,如果需要,每个目标都可以覆盖单个设置 - 例如,我的项目的Target SDK设置为10.5,但10.6特定的捆绑包将其Target SDK设置为10.6。
在某些情况下,某些设置在“项目设置”中没有意义 - 我猜测其中一个是搜索路径。
答案 1 :(得分:9)
您通常在一个项目中有多个目标 - 例如,您可能有一个框架项目,其中包含用于构建动态.framework包的目标,以及用于构建静态库的目标。或者您的应用程序可能有构建应用程序本身的目标,以及构建需要安装的帮助程序命令行工具的目标。
在可能的情况下,我建议更改最高级别的设置(在项目设置中,同时更改调试和发布配置),并且仅在必要时自定义目标设置。更好的是,将尽可能多的设置移动到xcconfig文件中,这似乎是一种更明确的指定构建设置的方式。
答案 2 :(得分:0)
序言:您运送目标。您的最终产品是目标。不是项目。将项目视为多个目标之上的保护伞。
举一个更现实的例子,假设您的(雨伞)公司同时开发了Uber和Lyft。
该公司具有以下三种环境:
调试和发布配置随您创建的每个新项目一起提供。您可以根据需要创建任意数量的其他配置
这将需要3种配置。要添加质量检查配置,请遵循教程here
我将其应用于项目。
不正确!我知道这令人困惑。您必须将项目视为一个大容器,您可以在其中创建配置。
然后针对以下选项卡,针对每个目标(不是项目):
常规,资源标签,构建阶段,构建规则,信息:
不同的配置之间没有区别
“签名和功能”标签:
您可以在团队之间切换并与其他团队签署。如果您想使用企业证书来签署Beta版本,而要使用应用商店证书来签署Appstore版本,这将非常有用。
“构建设置”标签:
对于本节中的几乎每个变量,您都可以根据配置提供不同的值。要自定义的常见构建设置为:
如果值不同,则行的值将为
<Multiple values>
,您基本上必须扩展该值才能查看为调试指定了什么值以及为Release或QA配置指定了什么值。
如果所有值都相同,那么您将看到为所有值赋予的值。默认情况下,值是相同的。
长话短说,这允许您在3个不同的环境(开发,质量保证,发行版)中使用相同的代码(项目)使用2个不同的应用程序(目标)。您可以使用配置创建不同的环境。
要了解更多信息,我强烈建议您深入了解此内容并了解什么是配置文件(xcconfig)。它比您想象的要简单得多。主要是一个键值对: