gpt4 book ai didi

c++ - 对命令行中指定的某些文件运行 ClangTool

转载 作者:行者123 更新时间:2023-11-28 06:11:02 26 4
gpt4 key购买 nike

我正在使用 Clang Libtooling。我需要对命令行中指定的某些文件运行 clang MyFrontendAction。

CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
ClangTool Tool(OptionsParser.getCompilations(), OptionsParser.getSourcePathList());
int i=Tool.run(newFrontendActionFactory<MyFrontendAction>().get());

我运行它:

./(driver) file1 file2 --

它在 file1 和 file2 上运行我的工具。我只是想让它在 file1 上运行,并想在 file2 上做一些其他的事情。我该怎么做?

最佳答案

您可以创建自己的(修改过的)argc 和 argv 并将它们传递给 OptionsParser 构造函数。

int my_argc = argc - 1;
const char *my_argv[my_argc];
for (int i = 0; i < my_argc; ++i) my_argv[i] = argv[i];
const char *extra_file = argv[argc - 1];

现在您有了包含命令行的 my_argv 以提供您的工具和带有 file2 的 extra_file。然后照常进行:

CommonOptionsParser OptionsParser(my_argc, my_argv, MyToolCategory);
// etc.

如果这不是一个微不足道的工具,并且您想允许常见类型的参数,那么您将不得不做一些更高级的事情。例如,您可以使用原始参数集创建 CommonOptionsParser,然后读出 getSourcePathList() 的结果,并匹配原始 argv 中的第二个字符串以排除它。然后您可以创建第二个 CommonOptionsParser 以在您的 ClangTool 中实际使用。

关于c++ - 对命令行中指定的某些文件运行 ClangTool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31271342/

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