Как настроить индексатор C++ Eclipse?

Я использую Eclipse в качестве своей IDE для проекта C++, и мне очень хотелось бы, чтобы он рассказал мне, где определен данный символ и каковы параметры для функции.

Однако есть одна загвоздка: я также использую Lazy C++, инструмент, который берет один исходный файл и генерирует файлы.h и.cpp. Эти файлы.lzz выглядят как заголовки, но этот инструмент поддерживает некоторые очень мягкие синтаксические преимущества, такие как объединение вложенных пространств имен в квалифицированное имя. Кроме того, у него есть несколько специальных тегов, чтобы указать инструменту, куда конкретно поместить что-либо (в заголовке или в исходном файле).

Так что мой типичный SourceFile.lzz выглядит так:

$hdr
#include <iosfwd>
#include "ProjectA/BaseClass.h"
$end

$src
#include <iostream>
#include "ProjectB/OtherClass.h"
$end

// Forward declarations
namespace BigScope::ProjectB
{
  class OtherClass;
}

namespace BigScope::ProjectA
{
  class MyClass : public ProjectA::BaseClass
  {
    void SomeMethod(const ProjectB::OtherClass& Foo) { }
  }
}

Как видите, это все еще узнаваемый C++, но с несколькими дополнениями.

По какой-то причине индексатор CDT, похоже, не хочет ничего индексировать, и я не знаю, что не так. В представлении индексатора оно показывает мне пустое дерево, но говорит о том, что оно содержит около 15000 символов и более, и ни к одному из них я не могу получить доступ.

Итак, вот мой вопрос: как я могу заставить Индексатор выводить больше информации о том, что он делает, и почему он терпит неудачу, когда это происходит, и могу ли я настроить его больше, чем просто с помощью параметров, доступных через GUI?

Спасибо,

деревенщина

2 ответа

Я бы вообразил его одним из:

  • Eclipse не хочет отображать не-C++ ресурсы в дереве (у меня были проблемы с этим)

  • У вас не включено "Настройки> C/C++ > Индексатор> Индексировать все файлы".

  • Вы хотите использовать "Полный индексатор C / C++", а не "Быстрый индексатор C / C++"

Анализатор / индексатор CDT не распознает такие странные расширения. Единственное, что вы можете сделать, это определить макросы на странице свойств Paths and Symbols, чтобы обмануть парсер. Попробуйте создать макросы для $hdr, $end а также $src которые имеют пустые тела. Таким образом препроцессор удалит их, и парсер не захлебнется ими.

Другие вопросы по тегам