编辑文件后是否必须完全重建 LLVM?

Do I have to fully rebuild LLVM after editing a file?

我正在调整 LLVM 文件并在我的构建目录中执行 "make" 以使用调整后的文件重建 LLVM,这需要一段时间,即使我的更改相当小(我知道我的一个文件将会影响其他文件)。我是否必须使用 'cmake --build .' 在构建目录中生成一个新的 make 文件,或者只调用 'make' 是否正确?重建需要一段时间是否很常见?

我认为,大部分时间花在 re-linking 二进制文件上,其中 LLVM 有很多(optllc 等)。加速构建的一个选项是启用 LLVM_BUILD_LLVM_DYLIBLLVM_LINK_LLVM_DYLIB,另一个是发布 make opt 而不是 make,如果你主要使用 opt.

这些选项将使构建系统生成一个包含所有 LLVM 组件(LLVMSupport、LLVMCodegen 等)的大型动态库(.so 或 .dll),并为其创建工具 link。链接到动态库要快得多,因为您不需要 re-link 每个工具可执行文件的所有静态代码。

此外,如果您只是修改后端目标,那么在 tools/llc 目录中发出 make 就足够了。这样只会重新链接所需的工具,从而加快构建过程。