Как переписать опцию clang libtooling -version для отображения версии моей программы - PullRequest
2 голосов
/ 04 июня 2019

Я разработал инструмент, использующий Clang Libtooling и параметр -help, который говорит об опции -version:

-version - Показать версию этой программы

И когда я выполняю это:

$ tool_name -version

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

LLVM версия 6.0.1

Оптимизированная сборка.

Цель по умолчанию: x86_64-unknown-linux-gnu

Процессор хоста: broadwell

Показывает версию clang, используемую для моей программы. Но есть ли способ показать информацию о версии моего инструмента вместо clang?

Что-то вроде:

$ tool_name -version

tool_name 2.0

Я искал документ Clang, но не повезло.

1 Ответ

2 голосов
/ 04 июня 2019

Инструменты 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!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...