发布于 2016-01-23 15:18:40
通常使用ENABLE_BITCODE=YES构建库时,Xcode会将构建标志-fembed-bitcode-marker添加到任何clang调用中,在最后的o文件中放置一个“空”bitcode。
因此,如果您在构建阶段查看编译操作,它将如下所示:
CompileC {build_path}/StaticBitcode/StaticLogger.o StaticBitcode/StaticLogger.m正态armv7目标-c com.apple.compilers.llvm.clang.1_0.compiler cd {path}/StaticBitcode export =en_us.us-ASCII导出的armv7/armv7/Xcode采购产品.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective c -arch armv7 -fmessage-length=0 -f诊断-显示-说明-包括-堆栈-f宏-回溯-限制=0 -std=gnu99 -fobjc-弧形-fmodules -gmodules -f模块-缓存-.
这对构建操作(独立于目标)是正确的。
当您使用Build & Archive时,-fembed标志将被-fembed-bitcode替换,它确实构建了一个启用了比特码的二进制文件:
CompileC {build_path}/StaticBitcode/StaticLogger.o StaticBitcode/StaticLogger.m正态armv7目标-c com.apple.compilers.llvm.clang.1_0.compiler cd {path}/StaticBitcode export =en_us.us-ASCII导出的armv7/armv7/Xcode采购产品.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective c -arch armv7 -fmessage-length=0 -f诊断-显示-说明-包括-堆栈-f宏-回溯-限制=0 -std=gnu99 -fobjc-弧形-fmodules -gmodules -f模块-缓存-.
fembed位码标志
如果将-fembed-bitcode标志添加到其他C标志,则在编译期间将向编译器发送两个标志。它可能会让您在使用链接到另一个项目的库时收到的一些警告保持沉默。但是,您需要检查是否得到了预期的行为。:)
(当我在其他C标志上使用-fembed-bitcode进行测试时,Xcode给出了警告clang: warning: argument unused during compilation: '-fembed-bitcode-marker')
BITCODE_GENERATION_MODE
另一方面,
如果在BITCODE_GENERATION_MODE=bitcode上设置User-defined Setting,即使在构建阶段,文件也将使用标志-fembed-bitcode进行编译。
而且,如果您设置了BITCODE_GENERATION_MODE=marker,那么文件将使用标志-fembed-bitcode-marker编译,这与操作阶段无关。
因此,如果要对每个操作(构建和存档)启用bitcode,更好的方法是使用BITCODE_GENERATION_MODE设置。
资源
https://stackoverflow.com/questions/34959767
复制相似问题