如何覆盖clang libtooling -version选项以显示程序的版本

时间:2019-06-04 03:34:11

标签: clang

我已经使用Clang Libtooling开发了一个工具,并且-help选项说明了有关-version选项的信息:​​

-版本-显示该程序的版本

当我执行此操作时:

$ tool_name -version

LLVM(http://llvm.org/):

LLVM版本6.0.1

优化的构建。

默认目标:x86_64-unknown-linux-gnu

主机CPU:Broadwell

它显示了用于我的程序的clang版本。但是,有什么方法可以显示我的工具的版本信息而不是clang的版本信息吗?

类似的东西:

$ tool_name -version

tool_name 2.0

我搜索了clang文档,但没有运气。

1 个答案:

答案 0 :(得分:2)

Clang工具使用LLVM的CommandLine库来解析命令行参数。它有自己的manual,您可以在其中找到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进行快乐的黑客入侵!