我使用-xcconfig参数指定一个xcconfig文件来调用xcodebuild (Xcode12.5)。如果xcconfig文件包含基于构建配置的条件变量赋值(例如SWIFT_OPTIMIZATION_LEVEL[config=Debug] = -Onone),我会得到以下错误:
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参数...)
发布于 2021-10-25 14:02:29
在几次尝试理解这个问题之后,我找到了一些解决方法:
该问题已在Xcode13中修复,Release Notes明确列出此问题已解决:
当您使用-xcconfig命令行标志和XCODE_XCCONFIG_FILE环境变量将xcconfig文件传递给xcodebuild时,Xcode将使用New Build系统语义来解析它们,该语义也支持条件参数。(25001734)
我发现在我的例子中,实际上不需要显式地为xcode build指定xcconfig文件,但是如果在Xcode中将xcconfig文件指定为给定目标/构建configuration.的构建配置源,则可以正确解析这些设置
可以告诉Xcode对给定的构建配置使用特定的xcconfig文件。一个用于调试,另一个用于发布),从而消除了使用条件赋值的需要。此外,通过使用#include指令,我们可以为调试和发布配置文件中包含的所有公共设置创建一个“共享”xcconfig文件,以避免重复共享设置值。
有关xcconfig文件的更多信息可以在The Unofficial Guide to xcconfig files中找到。
https://stackoverflow.com/questions/69709417
复制相似问题