我正在研究一种从规范生成C代码的工具.因此,在将编译代码与其他工具一起使用之前,用户需要自己编译生成的代码.我想自动化这个繁琐的过程.我不知道是否可以使用libclang直接嵌入编译器,而不是调用一个进程?
osg*_*sgx 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.