作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在使用 Clang Libtooling。我需要对命令行中指定的某些文件运行 clang MyFrontendAction。 CommonOptionsParser OptionsParser(a
我是一名优秀的程序员,十分优秀!