让CMake用Bitcode输出Dylib或Framework

时间:2018-03-12 12:29:20

标签: cmake dylib

在构建用于mac / tv / iOS项目的框架时,我决定构建一个框架并包含bitcode,以防万一。但是,我的输出框架不包含bitcode。

我可以看到每个源文件都会调用-fembed-bitcode但是当我使用.dylib检查otool -l library.dylib时,没有__LLVM个部分。切换到创建静态库我可以看到__LLVM部分。

为什么没有正确建立图书馆?

1 个答案:

答案 0 :(得分:0)

关键是静态库只是目标文件的存档。为了在框架中正确构建动态库,您需要查看cmake的最后一行输出。在那里,您将看到clang调用所有.o个文件,输出文件为.dylib。此行缺少-fembed-bitcode,在链接库时,您需要再次传递-fembed-bitcode标记。

因此,通过将标志添加到编译目标和库链接正确添加bitcode。

target_compile_options( library PUBLIC -fembed-bitcode )
target_link_libraries( library PUBLIC -fembed-bitcode )