Eclipse - "Этот проект не является проектом CDT"

У меня есть существующий C-Code и существующий Makefile, который я хочу обернуть в C-Project Eclipse (используя Eclipse 3.4 Ganymede). Код организован следующим образом:

Главный каталог: /Project/Software

Источник и заголовки: ../Project/Software/CodeDir1 ../Project/Software/CodeDir2 и т.д.

До сих пор я делал следующие шаги:

  • Установить Eclipse worksapce в /Project/
  • Создайте новый C-проект с именем Software → Теперь Eclipse интегрирует все исходные файлы и т.д. в проект
  • Перейдите в раздел "Свойства → C/С++ Build" и установите "Custom Build options"

В первый раз я делаю это, все работает нормально. Я получаю вывод в свою консоль, и все круто. Но затем "Build Icon" ( "Маленький молот" ) выделен серым цветом, и я больше не могу его нажимать. Если я сейчас перейду к Project Properties → C/С++ Build, он просто скажет: "Этот проект не является проектом CDT", а также я получаю сообщение об ошибке с "java.lang.NullPointerException".

Как я могу получить рабочий проект?

изменить

Чтобы избежать простой ошибки, я попробовал то же самое с новой версией Eclipse (Kepler). Я получаю ту же ошибку ( "Нет проекта CDT" ), но без исключения Null Pointer.

Но я мог немного сузить проблему: первый время, когда я запускаю процесс make, он всегда работает. Если процесс сборки завершился неудачно, я все равно могу перейти к своим свойствам сборки. Как только я получу один полный и без ошибок запуск сборки, эта проблема возникает. Что касается этого, это происходит только тогда, когда мой вызов выполняется из Eclipse. Если я вызову его из командной строки, я все равно могу сделать одно из затмения.

Ответ 1

Корень проблемы не находится в Eclipse, это в make файле.

Структура каталогов всего проекта следующая:

Project_Dir\Documentation\
Project_Dir\Output\
Project_Dir\Software\
Project_Dir\Tools\

Исходные файлы находятся в каталоге \Software\. Поэтому я выбрал Project_Dir\Software\ как папку проекта, а это значит, что там находятся файлы .project и .cproject.

Сам makefile временно записывает выходные файлы в папку \Software\. В конце он копирует все файлы из каталога Software в Output (практически a move *.* Project_Dir\Output\)

Эта команда также перемещает файлы проекта Eclipse, что затрудняет поиск eclipse и открывает свойства проекта.

Два решения:

  • Измените каталог проекта в eclipse на \Project_Dir\, поскольку все это связано с проектом.
  • Добавьте две строки в make файл: перед командой перемещения: attrib +r +s *.project и attrib -r -s *.project после команды move. (То же самое для .cproject). Это предотвращает перемещение файла makefile

Ответ 2

Если вы импортируете существующий проект CDT и видите "Этот проект не является проектом CDT", возможно, проект был создан в старой версии Eclipse, и вам необходимо:

  • Выберите проект на вкладке Project Explorer,
  • Нажмите "Файл" > "Создать" > "Преобразовать в проект C/С++"

Это добавит новый .cproject файл, и вы будете готовы к работе.

Ответ 3

При создании нового проекта вам нужно создать его в качестве проекта makefile - он будет использовать make для создания проекта, но настройка свойств сборки должна быть через ваш make файл и make invocation.

Эта ссылка сообщает вам, как создать проект make файла:

Чтобы создать проект:

Выберите "Файл" > "Создать" > "Проект".

Когда вы создаете новый проект, вам необходимо указать проект тип. Этот тип проекта будет определять привязку, данные и вкладки что CDT использует/отображает.

Выберите тип создаваемого проекта. В этом уроке разверните C/С++ и выберите С++ Project. Откроется мастер проекта С++. Нажмите здесь, чтобы увидеть иллюстрацию.

По умолчанию CDT фильтрует типы Toolchain и Project, которые отображаемые в настоящее время в этих списках, основаны на поддержке языка для мастер проекта С++, который вы выбрали для этого учебника.

В поле Имя проекта введите HelloWorld. Оставить использование по умолчанию Выбран вариант местоположения.

Затем вы хотите выбрать тип создаваемого проекта. В новом CDT Project Wizard, вы можете выбрать один из следующих типов проектов: Исполняемый файл - предоставляет исполняемое приложение. Этот тип проекта папка содержит три шаблона. Пример Hello World С++ предоставляет простое приложение С++ Hello World с main(). Hello World ANSI C Пример предоставляет простое приложение Hello Hello World с функцией main(). пустой Проект предоставляет папку с одним исходным проектом, которая не содержит файлы. После выбора этого шаблона результатом будет проект с только файлы метаданных, необходимые для типа проекта. Вы как ожидается, предоставить исходные файлы для цели проекта. makefile для типа Исполняемого проекта создается автоматически CDT.

  • Общая библиотека - исполняемый модуль, который скомпилирован и связан отдельно. Когда вы создаете проект, который использует общую библиотеку (libxx.so), вы определяете проект разделяемой библиотеки как проект Ссылка для вашего приложения. Для этого типа проекта CDT объединяет файлы объектов и объединяет их, поэтому они перемещаются и могут использоваться многими процессами. Общие библиотеки называются с использованием формат libxx.so.version, где версия - это номер со значением по умолчанию 1. Файл libxx.so обычно является символической ссылкой на последнюю версию версия. Файл makefile для этого типа проекта автоматически создается CDT.
  • Статическая библиотека - коллекция объектных файлов, которые вы можете связать в другое приложение (libxx.a). CDT объединяет объектные файлы (то есть .o) в архив (.a), который напрямую связан с исполняемый файл. Makefile для этого типа проекта автоматически созданный CDT.
  • Makefile Project - создает пустой проект без файлов метаданных. Этот выбор полезен для импорта и изменения существующих проекты на основе makefile; для этого не создается новый make файл тип проекта.

Ответ 4

Мне удалось преодолеть это, установив/обновив соответствующие плагины CDT, такие как "Поддержка Visual С++".