首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcodebuild:在使用条件集错误覆盖参数时实现对宏的XCBuild支持

xcodebuild:在使用条件集错误覆盖参数时实现对宏的XCBuild支持
EN

Stack Overflow用户
提问于 2021-10-25 14:02:29
回答 1查看 76关注 0票数 0

我使用-xcconfig参数指定一个xcconfig文件来调用xcodebuild (Xcode12.5)。如果xcconfig文件包含基于构建配置的条件变量赋值(例如SWIFT_OPTIMIZATION_LEVEL[config=Debug] = -Onone),我会得到以下错误:

代码语言:javascript
复制
FIXME: Implement XCBuild support for macros in overriding parameters with condition sets:

    SWIFT_OPTIMIZATION_LEVEL[config=Debug] = -Onone

无论执行什么操作,xcodebuild都会失败。

请注意,当使用fastlane gym构建并使用gym的xcconfig参数传递xcconfig文件时也会发生这种情况(这很有意义,因为gym只是在幕后调用xcodebuild并使用相同的xcconfig参数...)

EN

回答 1

Stack Overflow用户

发布于 2021-10-25 14:02:29

在几次尝试理解这个问题之后,我找到了一些解决方法:

  1. 更新到Xcode13

该问题已在Xcode13中修复,Release Notes明确列出此问题已解决:

当您使用-xcconfig命令行标志和XCODE_XCCONFIG_FILE环境变量将xcconfig文件传递给xcodebuild时,Xcode将使用New Build系统语义来解析它们,该语义也支持条件参数。(25001734)

  1. 不显式地传递xcconfig文件,而是依赖Xcode来使用它来解析构建配置

我发现在我的例子中,实际上不需要显式地为xcode build指定xcconfig文件,但是如果在Xcode中将xcconfig文件指定为给定目标/构建configuration.的构建配置源,则可以正确解析这些设置

  1. 为每个生成配置将设置拆分到单独的文件中,并在Xcode中为该特定生成配置指定每个文件

可以告诉Xcode对给定的构建配置使用特定的xcconfig文件。一个用于调试,另一个用于发布),从而消除了使用条件赋值的需要。此外,通过使用#include指令,我们可以为调试和发布配置文件中包含的所有公共设置创建一个“共享”xcconfig文件,以避免重复共享设置值。

有关xcconfig文件的更多信息可以在The Unofficial Guide to xcconfig files中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69709417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档