首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcodebuild ACTIVE_COMPILATION_CONDITIONS不覆盖目标的ACTIVE_COMPILATION_CONDITIONS

xcodebuild ACTIVE_COMPILATION_CONDITIONS不覆盖目标的ACTIVE_COMPILATION_CONDITIONS
EN

Stack Overflow用户
提问于 2021-07-17 17:50:51
回答 1查看 674关注 0票数 0

我们尝试使用xcodebuild来构建我们的框架,而不是使用手动的Xcode IDE运行按钮。问题是,在我们的框架中,我们使用ACTIVE_COMPILATION_CONDITIONS,它有几个值。然后,如果集成了特定框架,则使用这些值在运行时进行检查,例如检查Sentry:

代码语言:javascript
复制
#if SENTRY_AVAILABLE
    import Sentry
#endif

问题是,对于某些构建,我们需要覆盖我们的项目设置,特别是ACTIVE_COMPILATION_CONDITIONS。但是,在成功执行以下脚本之后,Xcode仍然不会覆盖我们在项目中定义的我们提供的ACTIVE_COMPILATION_CONDITIONS。

剧本:

代码语言:javascript
复制
xcodebuild -workspace project.xcworkspace -scheme SDKNR1 ONLY_ACTIVE_ARCH=NO 
EXCLUDED_ARCHS=arm64 ACTIVE_COMPILATION_CONDITIONS=SENTRY_AVAILABLE -configuration 
release -derivedDataPath $PROJECT_DIR/../simulators/SDKNR1 -sdk iphonesimulator
ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" clean build

正如您所看到的,我们定义了ACTIVE_COMPILATION_CONDITIONS=SENTRY_AVAILABLE,,但是它不会覆盖目标的(SDKNR1)项目设置。假设SDKNR1没有任何ACTIVE_COMPILATION_CONDITIONS。我们预期xcodebuild命令将覆盖目标的ACTIVE_COMPILATION_CONDITIONS,并包括SENTRY_AVAILABLE

会欢迎任何想法,还是不可能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-30 04:03:25

正确的构建设置键是"SWIFT_ACTIVE_COMPILATION_CONDITIONS“。

通过使用命令并验证键是否存在,您可以对此进行双重检查:

代码语言:javascript
复制
xcodebuild -showBuildSettings <project/scheme/target/configuration flags>

来自-showBuildSettings的结果(截断,用于Xcode项目设置中的RELEASE_CONDITION2集,用于发布构建,因为某种原因,调试不会显示):

代码语言:javascript
复制
.....
SUPPORTS_TEXT_BASED_API = NO
SWIFT_ACTIVE_COMPILATION_CONDITIONS = RELEASE_CONDITION2
SWIFT_COMPILATION_MODE = wholemodule
.....

在构建日志中,您应该看到(例如,在这里设置RELEASE_CONIDTION2,还注意到ACTIVE_COMPLIATION_CONIDTIONS被转换为ACTIVE_COMPLIATION_CONIDTIONS的-D参数):

代码语言:javascript
复制
Build settings from command line:
    .....
    SDKROOT = iphoneos14.5
    SWIFT_ACTIVE_COMPILATION_CONDITIONS = RELEASE_CONDITION2
    .....

CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler .....
    .....
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc <most compiler options removed> -DRELEASE_CONDITION2

以上都是Xcode 12.5

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

https://stackoverflow.com/questions/68422989

复制
相关文章

相似问题

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