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 С++".