Xcode:项目设置与目标设置

uyhoqukh  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(248)

我正在为我们的一个客户在Mac OS X上创建一个静态库,以及一个小的cmd行应用程序来测试静态库。cmd行项目有两个额外的库搜索路径,这意味着我在发布模式下链接到调试版本,几乎要疯了,所以我试图摆脱这两个路径,但我找不到它们被指定的位置。我在项目信息中查找,但结果是它们是在目标信息中指定的。
我不明白区别?!为什么有两套设置,本质上是一样的?!谁能给我讲讲?

mlmc2os5

mlmc2os51#

一个项目可以包含多个目标。例如,我编写的一个应用程序有四个目标-应用程序本身、一个快速查看插件、一个框架和一个包含Mac OS 10. 6特定功能的捆绑包,这些功能可以动态加载到中。
项目设置适用于项目中的每个目标。每个目标可以根据需要覆盖单独的设置-例如,我的项目的目标SDK设置为10.5,但10.6特定的捆绑包将其目标SDK设置为10.6。
在某些情况下,有些设置在项目设置中没有意义-我猜其中之一是搜索路径。

dfuffjeb

dfuffjeb2#

您通常在一个项目中有多个目标-例如,您可能有一个框架项目,其中一个目标用于构建为dynamic .framework捆绑包,另一个目标用于构建静态库。或者,您的应用可能有一个目标用于构建应用本身,另一个目标用于构建它需要安装的某些助手命令行工具。
如果可能的话,我建议在最高级别更改设置(在项目设置中,同时更改调试和发布配置),并且只在必要时定制目标设置。更好的是,将尽可能多的设置移到xcconfig文件中,这似乎是指定构建设置的更明确的方式。

syqv5f0l

syqv5f0l3#

前言:你要运送目标。你的最终产品是目标。而不是项目。把项目想象成多个目标之上的伞。
举一个更现实的例子,假设Uber和Lyft都是由你的(伞)公司开发的。
公司有以下三个环境:

  • debugging
  • 质量保证部
  • 放行

Debug和Release配置随您创建的每个新项目一起提供。
这将需要3个配置。要添加QA配置,请遵循教程here

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

我把它应用到了这个项目上。

好的,配置只用于项目,而不用于目标。对吗?

不正确!我知道这很混乱。你必须把项目看作一个大容器,在那里你可以创建你的配置。
然后针对每个目标(非项目),针对以下选项卡:

常规,资源标记,生成规则,信息:

不同配置之间没有差异

签名与权能选项卡:

你可以在团队之间切换,并使用不同的团队对其进行签名。如果你想使用企业证书对beta版本进行签名,但使用应用商店证书对Appstore版本进行签名,这将非常有用。

“生成设置”选项卡:

对于此部分中的几乎每个变量,您都可以根据配置给予不同的值。要自定义的常见生成设置包括:

  • 体系结构- 'Build Active Architecture only'
  • 生成选项'Debug Information Format'
  • Package 材料
  • 根据配置设置您想要的plist。
  • 更改软件包标识符(Packaging〉〉Product Bundle Identifier)。如果您切换某个字段的值,那么在plist中您将看到:
  • 签署
  • 代码签名标识
  • 代码签名样式(手动或自动)
  • 开发团队
  • 预配概要文件
  • Apple Clang -优化级别

如果值不同,则行的值为

<Multiple values>

您基本上必须展开该值,以查看为Debug指定值以及为Release或QAConfig指定的值。
如果所有的值都相同,那么你只会看到给所有这些值的值。默认情况下,这些值是相同的。

**构建阶段:**没有基于配置进行切换的GUI方式。但是,您仍然可以基于配置运行某些命令。示例:

if [ "${CONFIGURATION}" = "Debug" ]; then
"${PODS_ROOT}/SwiftLint/swiftlint" autocorrect
"${PODS_ROOT}/SwiftLint/swiftlint"
fi

摘要

长话短说,这允许您在3个不同的环境(开发、QA、发布)中拥有2个具有相同代码(项目)的不同应用(目标)。
要了解更多关于这方面的内容,我强烈建议您深入阅读更多关于这方面的内容,并了解什么是配置文件(xcconfig)。它比您想象的要简单得多。它主要是一个键值对:

相关问题