Не позволить моему инструменту на основе Clang анализировать заголовочные файлы в исходном коде?

Я пишу автономный инструмент, основанный на LibTooling с RecursiveASTVistor, и я не хочу просматривать содержимое файлов заголовков, хранящихся в исходном коде. Нужно ли менять базу данных компиляции? Я использовал этот небольшой взлом, чтобы предотвратить сбои моего инструмента, но я не хочу, чтобы мой инструмент анализировал какие-либо заголовочные файлы, вообще включенные в исходный код, с которым я имею дело.

bool VisitDecl(Decl *D) {

FullSourceLoc FullLocation = Context->getFullLoc(D->getLocStart());
const auto &SourceManager = Context->getSourceManager();

if (FullLocation.isValid() && !SourceManager.isInSystemHeader(FullLocation) && Context->getSourceManager().isInMainFile(D->getLocation()))
}

0

Решение

То, что вы делаете, это способ пропустить системные заголовочные файлы.
Но если вы хотите пропустить все включенные заголовки, вы можете указать свой каталог включения с помощью --isystem=<custom include dirs> вместо просто -I <custom include dirs> опция командной строки. С этим изменением все пользовательские заголовки включения будут считаться системными заголовками и будут пропущены.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]