Поиск всего проекта для включения в Eclipse CDT - PullRequest
7 голосов
/ 08 ноября 2008

У меня есть большая существующая кодовая база c ++. Обычно пользователи кодовой базы редактируют исходный код с помощью gvim, но мы бы хотели начать использовать отличные возможности IDE в Eclipse. Кодовая база имеет обширную иерархию каталогов, но исходные файлы используют директивы без путей из-за некоторого вуду, которое мы используем в нашем процессе сборки. Когда я связываю источник с моим проектом в Eclipse, индексатор жалуется, что не может найти никаких файлов заголовков (потому что мы не указываем пути в наших включениях.) Если я вручную добавлю каталоги из рабочей области в путь включения все работает чудесно, но, очевидно, ручное добавление сотен каталогов невозможно. Будет ли простой способ заставить Eclipse искать в любом месте проекта включаемые файлы, не добавляя их один за другим? Если нет, то кто-нибудь может предложить хорошее начальное место, например, какие классы расширять, для написания плагина, который просто сканирует проект при создании / модификации и программно добавляет все каталоги в путь включения?

Ответы [ 4 ]

5 голосов
/ 08 ноября 2008

Способ, которым CDT управляет путями сборки, заключается в просмотре XML-файла .cdtbuild в базе вашего каталога проектов (это может быть другое имя в Windows ... не уверен)

В этом вы должны увидеть что-то вроде

<option id="gnu.c.compiler.option.include.paths....>
<listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" />
<listOptionValue ... />

...
</option>

здесь находятся все пути сборки, которые вы настраиваете в графическом интерфейсе. Должно быть довольно легко добавить все каталоги к нему, используя простой Perl-скрипт для обхода проекта и генерации всех записей listOptionValue.

Это явно не идеальный метод. Но мне интересно, с какой системы сборки вы переходите, если она основана на make, вы должны иметь возможность получить затмение для использования ваших файлов make.

2 голосов
/ 06 мая 2009

Эта функция уже была реализована в текущем потоке разработки CDT и будет доступна в CDT 6.0, которая будет выпущена вместе с Eclipse 3.5 в июне 2009 года.

Обычно, если у вас есть #include и файл заголовка существует где-то в вашем проекте, тогда CDT сможет найти его без необходимости вручную устанавливать пути включения.

Если вам нужна эта функция, вы можете загрузить и установить последнюю версию сборки CDT.

Затмение Бугзиллы: https://bugs.eclipse.org/bugs/show_bug.cgi?id=21356
Последние сборки CDT 6.0: http://download.eclipse.org/tools/cdt/builds/6.0.0/index.html

1 голос
/ 13 ноября 2008

После прочтения этой записи Eclipse CDT FAQ звучит так, будто Eclipse может автоматически генерировать список включаемых каталогов, если вы запускаете сборку из Eclipse и если ваша сборка выводит gcc / g++ команды до фактического запуска gcc / g++. Чтобы изменить способ запуска сборки Eclipse, перейдите в «Свойства проекта», затем выберите категорию «Сборка C / C ++» и найдите параметр «Команда сборки» в правой части диалогового окна.

0 голосов
/ 08 ноября 2008

В зависимости от количества voodoo, которое вы выполняете в процессе сборки, Eclipse может быть не в состоянии правильно проанализировать ваши исходные файлы, особенно если у вас есть заголовки с одинаковыми именами для разных исходных файлов. Если вы действительно хотите в полной мере использовать преимущества Eclipse, вам нужно убедиться, что при любой настройке вы не будете путать синтаксический анализатор. Лично я бы рекомендовал иметь простой макет и процесс сборки.

Что касается рассматриваемого вопроса, то добавление каталогов один за другим в значительной степени является вашим лучшим выбором.

...