C++ 如何在LLVM中添加X86后端过程,而不必重建各种共享库,包括clang?

C++ 如何在LLVM中添加X86后端过程,而不必重建各种共享库,包括clang?,c++,llvm,llvm-clang,llvm-c++-api,C++,Llvm,Llvm Clang,Llvm C++ Api,如何在LLVM中添加X86后端过程,而不必重建各种共享库,包括clang 在研究了一段时间的LLVM“中间端”(IR/opt)之后,我决定进入后端 在这里,我在../lib/Target/X86/中创建了一个非常简单的MachineFunctionPass,它可以很好地编译 现在,据我所知,我不能使用llc加载LLVM后端通道,就像optw.r.t.IR通道一样。相反,我必须将新的pass构建到LLVM基础结构中,因此我发出命令cmake--从我的llvm/build目录生成 这会导致重新构建各

如何在LLVM中添加X86后端过程,而不必重建各种共享库,包括clang

在研究了一段时间的LLVM“中间端”(
IR
/
opt
)之后,我决定进入后端

在这里,我在
../lib/Target/X86/
中创建了一个非常简单的
MachineFunctionPass
,它可以很好地编译

现在,据我所知,我不能使用
llc
加载LLVM后端通道,就像
opt
w.r.t.IR通道一样。相反,我必须将新的pass构建到LLVM基础结构中,因此我发出命令
cmake--从我的
llvm/build
目录生成

这会导致重新构建各种共享库,包括各种
clang
specific.so文件


问题是这需要30分钟以上,因此这不是构建简单后端通道的正确方法。如何快速配置并将pass构建到LLVM中,以便与
llc
一起使用?

我不是LLVM方面的专家,但这似乎适合我:

  • 转到LLVM构建目录:
    cd~/LLVM/build/
  • 转到
    llc
    构建目录:
    cd-tools/llc/
  • 构建
    llc
    cmake--Build
  • 现在,不再使用最顶层的
    cmake
    build脚本,该脚本将生成整个项目(更改的文件和依赖项),而只使用
    llc
    工具进行构建


    我还没有对此进行彻底测试。

    与上面的帖子略有不同:

    cmake -G Ninja ...
    
    配置llvm

    然后


    应该可以正常工作。

    为什么默认目标(几乎)构建每个可执行文件?构建系统不应该检测到只有“llc”的依赖项发生了变化吗?可能是因为依赖项。您没有说您更改了什么文件以及使用了什么构建系统。
    ninja llc