首页 > 解决方案 > 使用 cmake 编译 cppfile 时如何获取位码?

问题描述

我已经搜索了可以使用命令行尝试的教程:clang -emit-llvm -o file.bc 但是如何在cmakelists中编写它。我必须从源代码文件中获取所有位码文件。

标签: cmakeclangllvmllvm-clang

解决方案


几种可能的选择:

  • 您可以将特定标志添加到所有来源: set ( CMAKE_C_FLAGS "-emit-llvm")
  • 或者如果你仍然想同时拥有 .bc 文件和 .o 文件,你也许应该引入自定义编译命令,这实际上是两个命令:第一个编译 .bc 文件,第二个要么编译 .o 文件,要么转换 .o 文件。 bc 文件通过 .o 文件转换为 .o 文件llc
  • 如果您使用 -flto 标志进行编译,那么所有 .o 文件实际上都是 .bc 文件(例如,您可以使用 llvm-bcanalyzer 检查它)。但在这种情况下,您必须将其与ld.lld

推荐阅读