Как мне запустить Clang Tool в системе сборки на основе CMake? - PullRequest
0 голосов
/ 15 марта 2020

Я работаю над инструментом, использующим библиотеку Clang LibTooling, и хочу, чтобы он анализировал всю систему сборки.

Код, с которым я пытался вызвать clang:

int main(int argc, const char** argv) {
  clang::tooling::CommonOptionParser parser(argc, argv, OptionCategory);
  clang::tooling::ClangTool tool(parser.getCompilations(),
                                 parser.getSourcePathList());

  return tool.run(
      clang::tooling::newFrontendActionFactory<tlx::TemplateAction>().get());
}

Система сборки, на которой я хочу запустить свой инструмент, использует CMake, поэтому я могу легко экспортировать базу данных компиляции compile_commands.json.

Но я не знаю, как передать ее своему инструменту.

Я пытался: ./myTool <path>/compile_commands.json, где я получаю сообщение об ошибке skipping <path>/compile_commands.json. Compile command not found.

Я также пытался: ./myTool -p <path to build> <path to source>/main.cpp, который работает, но я должен перечислить каждую единицу перевода. Смысл наличия базы данных компиляции состоит в том, что она содержит все единицы перевода с командой, с которой она была скомпилирована.

Есть ли способ просто передать compile_commands.json в качестве аргумента моему инструменту и позволить CommonOptionParser разобрать?

...