以下代码成功设置了一个用于解析的ClangTool:
std::vector<std::string> source_files;
cl::OptionCategory option_category("options");
CommonOptionsParser options_parser(argc, argv, option_category);
ClangTool tool(options_parser.getCompilations(), source_files);
但是,我自己创建了argc和argv - 它们不是来自main()。而不是输入文件,是否可以让ClangTool解析字符串的内容?如,
const char *str = "extern int foo;\n";
mapVirtualFile()看起来像我想要的,但是当我尝试时,foo并没有出来。
tool.mapVirtualFile(StringRef("faux_file.c"), StringRef(str));
// Then proceed to tool.run(...), etc.
我可以在/ tmp中创建一个临时文件,但我只想从字符串中读取。
更新
创建临时文件有效。它有点像hack-ish,但它稳定且一致。有一种从字符串输入的方式会很好,但现有的实现似乎不可能。