标签: c++ cmake llvm
我们已经实现了LLVM传递并将其编译到库(称为libMyPass.so)中。
libMyPass.so
我们希望将此通行证应用于使用cmake进行构建的项目(其所有源代码文件)。有没有办法在cmake中做到这一点?
cmake
通常,我们使用clang从源文件中发出llvm位代码,opt将此过程应用于位代码,llc将新位代码转换为汇编语言然后再次clang将汇编语言编译为可执行文件。我可以使用cmake封装此过程吗?
clang
opt
llc
答案 0 :(得分:1)
您可以查看甚至使用this存储库,该存储库将各个步骤实现为cmake命令。
要点是创建各种命令(使用cmake的{{1}})基本上可以使用各种LLVM子工具以及各种{{1 }}目标属性,以便创建从源到本机二进制代码(即add_custom_command)的IR生成命令。
add_custom_command
例如,使用cmake附加到顶级.o目标,并在其SOURCES属性中为每个源文件创建一个(未优化的)llvmir_attach_bc_target()文件
.o
llvmir_attach_bc_target()
同一回购中包含各种示例,足以让您入门。