clang - 如何覆盖 clang libtooling -version 选项以显示我的程序的版本
问题描述
我已经使用 Clang Libtooling 和 -help 选项开发了一个工具,这说明了 -version 选项:
-version - 显示该程序的版本
当我执行此操作时:
$ 工具名称-版本
LLVM(http://llvm.org/):
LLVM 版本 6.0.1
优化构建。
默认目标:x86_64-unknown-linux-gnu
主机CPU:broadwell
它显示了用于我的程序的 clang 版本。但是有什么方法可以显示我的工具的版本信息而不是 clang 的吗?
就像是:
$ 工具名称-版本
工具名称 2.0
我搜索了铿锵文件,但没有运气。
解决方案
Clang 工具使用 LLVM 的 CommandLine 库来解析命令行参数。它有自己的手册,您可以在其中找到SetVersionPrinter函数。
这是一个小例子:
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"
using namespace clang;
using namespace clang::driver;
using namespace clang::tooling;
static llvm::cl::OptionCategory MyToolOptions("My Awesome Clang Tool");
int main(int Argc, const char **Argv) {
llvm::cl::SetVersionPrinter(
[](llvm::raw_ostream &OS) { OS << "Awesome v1.0.0\n"; });
CommonOptionsParser Options(Argc, Argv, MyToolOptions);
ClangTool Tool(Options.getCompilations(), Options.getSourcePathList());
return 0;
}
使用以下选项运行此工具-version
:
> ./myTool -version
Awesome v1.0.0
与 Clang 一起愉快地黑客攻击!
推荐阅读
- python - 如何在 HTML 烧瓶中实现下拉多选?
- algorithm - 比较选择排序中平均情况和最坏情况交换的数量
- scala - Spark 中的模式如何推断?
- kotlin - 字符串文字中的转义字符串插值
- apache-spark - Apache Spark:重新分区、排序和缓存对连接的影响
- amazon-web-services - 如何运行/重新运行 AWS Glue 工作流程的作业子集?
- python - 如何防止 django 应用程序中的 csv 注入
- logging - 使用 istio 进行日志记录
- python - ImportError:无法导入名称“lzip”
- javascript - 使用 Javascript 通过固定的垂直距离创建 SVG 路径