在构建用于mac / tv / iOS项目的框架时,我决定构建一个框架并包含bitcode,以防万一。但是,我的输出框架不包含bitcode。
我可以看到每个源文件都会调用-fembed-bitcode
但是当我使用.dylib
检查otool -l library.dylib
时,没有__LLVM
个部分。切换到创建静态库我可以看到__LLVM
部分。
为什么没有正确建立图书馆?
答案 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 )