gpt4 book ai didi

c++ - 如何使用编译数据库为文件生成 LLVM 位码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:35 25 4
gpt4 key购买 nike

我想为大量我有 compilation database 的 C 源文件生成 LLVM 位码.有没有办法调用 clang 以便它读取编译数据库并使用适当的标志?

背景

对于玩具程序,生成LLVM bitcode的命令很简单:

clang -emit-llvm -c foo.c -o foo.bc

但是,大型项目中的源文件需要许多额外的编译标志,包括 -I-D 等等。

我想编写一个脚本来遍历大量源文件并在每个源文件上调用 clang -emit-llvm ... 以生成 LLVM 位码。困难在于每个 clang -emit-llvm ... 命令都必须具有特定于该源文件的标志。我有一个用于这些源文件的编译数据库,它完美地捕获了每个单独的源文件所需的标志。 有没有办法让 clang -emit-llvm ... 知道我的编译数据库?

我想到的一个方案是自己解析编译数据库,为每个源文件找到合适的入口,修改command入口为(a)include -emit- llvm 和 (b) 将 -o foo.o 更改为 -o foo.bc,然后运行命令。这可能行得通,但似乎有点老套。

最佳答案

您可以依靠 Python 绑定(bind)来解析编译数据库,而不是自己解析。从test suite来看的绑定(bind),你可以做这样的事情:

cdb = CompilationDatabase.fromDirectory(kInputsDir)
cmds = cdb.getAllCompileCommands()

然后稍微更新cmds的内容。

关于c++ - 如何使用编译数据库为文件生成 LLVM 位码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com