首页 > 解决方案 > 如何覆盖 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

解决方案


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 一起愉快地黑客攻击!


推荐阅读