我正在研究一种从规范生成C代码的工具。因此,在将编译代码与其他工具一起使用之前,用户需要自己编译生成的代码。我想自动化这个繁琐的过程。我不知道是否可以使用libclang直接嵌入编译器,而不是调用一个进程?
答案 0 :(得分:15)
是的,某些版本的clang / llvm 可能是。您可以从http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1_main.cpp?revision=126577&view=markup开始=这是clang
二进制文件的来源。它会调用 libclang 库,您可以将此代码集成到您的应用程序中。 (实际上,它使用来自内部clang和llvm库的不稳定C ++接口,而不是libclang的稳定C API。)
如果您将所有C源保存在文件中,这就是您所需要的。但是如果你想直接通过内存传递源代码,你应该编写自定义SourceManager
并使用setSourceManager()
CompilerInvocation Clang
方法进行设置。