Я работаю над инструментом, использующим библиотеку 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
разобрать?