我正在为我们的客户在Mac OS X上创建一个静态库,以及一个小的命令行应用程序来测试这个静态库。命令行项目有两个额外的库搜索路径,这意味着我在Release模式下链接到Debug版本,差点让我疯掉,所以我试图摆脱这两个路径,但我找不到它们的具体位置。我一直在项目信息中寻找,但最终发现它们是在目标信息中指定的。
我不明白这个区别!为什么会有两组实质上相同的设置?!是否有人能够给我解释一下?
我不明白这个区别!为什么会有两组实质上相同的设置?!是否有人能够给我解释一下?
在一个项目中,通常会有多个目标——例如,你可能有一个框架项目,其中包含构建动态 .framework 捆绑包的目标,以及构建静态库的目标。或者你的应用程序可能有一个目标,用于构建应用程序本身,以及一个目标,用于构建它需要安装的一些辅助命令行工具。
建议尽可能在最高级别(在项目设置中,并同时更改调试和发布配置)更改设置,并仅在必要时自定义目标设置。更好的做法是将尽可能多的设置移动到 xcconfig 文件中,这似乎是指定构建设置的更明确的方式。
我将其应用于项目。
不正确!我知道这很令人困惑。您必须将项目视为一个大容器,在其中创建配置。
然后对于每个目标(而不是项目),有以下选项卡:
常规、资源标签、构建规则、信息:
在不同的配置之间没有区别
签名和功能选项卡:
您可以在团队之间切换并使用不同的团队进行签名。如果您想使用企业证书签署测试版构建,但使用应用商店证书签署Appstore构建,则此功能非常有用。
构建设置选项卡:
对于此部分中的几乎每个变量,您都可以基于配置提供不同的值。要自定义的常见构建设置包括:
如果值不同,则该行的值将是
<Multiple values>
您基本上需要扩展该值,以查看为调试、发布或QA配置给出的值。
如果所有值都相同,则只会看到赋给它们所有值的值。默认情况下,这些值相同。
构建阶段: 没有基于配置切换的GUI方式。但是,您仍然可以根据配置运行某些命令。例如:
if [ "${CONFIGURATION}" = "Debug" ]; then
"${PODS_ROOT}/SwiftLint/swiftlint" autocorrect
"${PODS_ROOT}/SwiftLint/swiftlint"
fi
长话短说,这使你可以在三个不同的环境(开发、QA、发布)中使用相同的代码(项目)创建两个不同的应用程序(目标)。您可以使用配置文件创建不同的环境。
要了解更多信息,我强烈建议您深入了解并了解配置文件(xcconfig)是什么。它比你想象的简单得多。它主要是一个键值对: