Xcode:项目设置与目标设置

时间:2009-10-29 10:18:18

标签: xcode settings target

我正在为我们的客户在Mac OS X上创建一个静态库,以及一个用于测试静态库的小型cmd行应用程序。 cmd行项目有2个额外的库搜索路径,这意味着我在发布模式下链接到Debug版本并且几乎疯了,所以我试图摆脱这两个路径,但我找不到它们被指定的位置。我正在查看项目信息,但事实证明它们是在目标信息中指定的。

我不明白这个区别?!为什么有2套设置,基本相同?!有人可以赐教吗?

3 个答案:

答案 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

enter image description here

我是否将此应用于目标或项目?

我将其应用于项目。

好,因此配置仅适用于项目,不适用于目标。对吧?

不正确!我知道这令人困惑。您必须将项目视为一个大容器,您可以在其中创建配置。

然后针对以下选项卡,针对每个目标(不是项目):

常规,资源标签,构建阶段,构建规则,信息:

不同的配置之间没有区别

“签名和功能”标签:

您可以在团队之间切换并与其他团队签署。如果您想使用企业证书来签署Beta版本,而要使用应用商店证书来签署Appstore版本,这将非常有用。

“构建设置”标签:

对于本节中的几乎每个变量,您都可以根据配置提供不同的值。要自定义的常见构建设置为:

  • 建筑-'Build Active Architecture only'
  • 构建选项'Debug Information Format'
  • 包装
    • 设置每个配置所需的plist。
    • 更改捆绑包标识符(包装>>产品捆绑包标识符)。如果您为某个字段切换值,则在plist中,您将看到:
  • 签名
    • 代码签名身份
    • 代码签名样式(手动或自动)
    • 开发团队
    • 配置文件
  • Apple Clang-优化级别

如果值不同,则行的值将为

<Multiple values>

,您基本上必须扩展该值才能查看为调试指定了什么值以及为Release或QA配置指定了什么值。

如果所有值都相同,那么您将看到为所有值赋予的值。默认情况下,值是相同的。

长话短说,这允许您在3个不同的环境(开发,质量保证,发行版)中使用相同的代码(项目)使用2个不同的应用程序(目标)。您可以使用配置创建不同的环境。

要了解更多信息,我强烈建议您深入了解此内容并了解什么是配置文件(xcconfig)。它比您想象的要简单得多。主要是一个键值对: