Импорт проекта CMake в CDT Eclipse - программирование
Подтвердить что ты не робот

Импорт проекта CMake в CDT Eclipse

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

PS: Я открыт для предложений для других IDE, которые хорошо работают с CMake.

4b9b3361

Ответ 1

KDevelop - отличная среда разработки с отличной поддержкой CMake.

Что касается Eclipse - запустите это:

cd <project_dir>
cmake -G "Eclipse CDT4 - Unix Makefiles" ./

Это создаст для вас проект Eclipse.

Ответ 2

Разрабатываем ответ на стрелку для Eclipse:

Сначала выберите каталог для файлов CMake. Я предпочитаю сохранять рабочие области Eclipse в ~/workspaces и исходный код в ~/src. Данные, которые мне нужно построить или протестировать проект, находятся в поддиректорах рабочего пространства проекта, поэтому я предлагаю сделать то же самое для CMake.

Предполагая, что ваше рабочее пространство и исходные папки называются someproject, выполните:

cd ~/workspaces/someproject
mkdir cmake
cd cmake
cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/someproject

Затем в рабочем пространстве Eclipse выполните:

Файл > Импорт... > Общие > Существующие проекты в рабочее пространство

Отметьте Выберите корневой каталог и выберите ~/workspaces/someproject/cmake. Убедитесь, что Копировать проекты в рабочее пространство НЕ проверяется.

Нажмите Готово, и у вас есть проект CMake в рабочей области.

Следует отметить две вещи:

  • Я использовал cmake для поддиректа рабочей области, но вы можете использовать имя по вашему выбору.
  • Если вы внесете какие-либо изменения в свою конфигурацию сборки (например, редактирование Makefile.am), вам нужно будет повторно запустить последнюю команду, чтобы Eclipse смог получить изменения.

Ответ 3

Я только что узнал, что генератор проекта CMakes CDT, кажется, не поддерживается и вызывает различные проблемы - особенно, кажется, с более поздними версиями Eclipse (из которых я также имел свою долю).

Рекомендуется использовать cmake4eclipse (доступный на Eclipse Marketplace), который использует CMakeLists.txt качестве единственного источника правды. Это также позволяет вам хранить исходное дерево отдельно от вашего рабочего пространства.

  • В Eclipse выберите " Файл"> "Создать"> "C Project".
  • Введите имя проекта и выберите корень дерева исходного кода в качестве местоположения проекта.
  • Выберите " Исполняемый файл"> "Пустой проект" в качестве типа проекта и примите набор инструментов по умолчанию.
  • Нажмите Finish, и в вашей рабочей области появится проект CMake.

Ответ 4

Одно простое решение на моем рабочем столе:

  1. В eclipse: New → New C/C++ Project → Empty or Existing CMake Project выберите имя проекта (например, проект).
  2. Скопируйте все свои файлы старого каталога в новый (путь к вашему проекту).

Ответ 5

Короче говоря, только генератор CDT в настоящее время является жизнеспособным вариантом. Зачем? Просто потому, что Eclipse должен получить определения препроцессора, включить пути и какие файлы включены в сборку откуда-то. В противном случае мы в конечном итоге проиндексировали бы все, и плохо, без определения правильных макросов. Если у вас есть повышение в репо или дерево среднего или большого размера, индексирование всего просто не будет работать в реальном мире - в любом случае не со скоростью и надежностью индексатора Eclipse. Поскольку в наши дни большинство людей, вероятно, хотят использовать Ninja для сборок (кто хочет подождать теплую сборку 30+ секунд, просто чтобы посмотреть, что грязно?), Это исключает единственный способ импорта этой информации через make файлы, которые в настоящее время поддерживаются., если вы не хотите генерировать две отдельные системы сборки каждый раз при настройке, что сделает автоматизацию реальной проблемой (учитывая, что cmake перезапускается сам при изменении списков).

В Eclipse Photon есть новая опция для прямого импорта проектов cmake. Однако на этом этапе я бы сказал, что это выглядит бесполезно для чего-то другого, кроме тривиальных проектов, поскольку, похоже, нет никакого способа импортировать уже настроенный каталог сборки или куда-либо установить переменные и аргументы, которые передаются в CMake. Я пока не знаю, как на самом деле работает эта функция, но может показаться, что Eclipse должен выполнять синтаксический анализ иерархии CMakeLists, следуя логике, чтобы увидеть, какие вызовы add_subdirectory() выполняются, и какие определения определяет препроцессор, что, по-видимому, подход без будущего, учитывая, что для этого у нас есть режим сервера cmake, и он, несомненно, потребует повторной реализации почти всего синтаксического анализатора языка cmake в Eclipse, чтобы эта работа работала.

Пока что единственное жизнеспособное решение, которое, по-видимому, отвечает требованиям реального мира, заключается в использовании генератора CDT cmake. Он может получить вышеупомянутую информацию непосредственно из cmake и записать ее в файл .cproject. Как упоминалось ранее, он не поддерживается и использует устаревший шаблон для .cproject, что вызывает некоторые проблемы.

Мои собственные минимальные требования для поддержки cmake:

  • Возможность импортировать уже настроенный проект. Большие системы сборки часто используют сценарии для передачи многочисленных переменных в cmake из командной строки.
  • Только то, что является частью системы сборки, должно быть проиндексировано.
  • Он должен работать с исходными сборками дерева.
  • Необходимо использовать препроцессор, определяющий и включающий пути из системы сборки, чтобы иметь работающую индексацию.
  • Должен работать с генератором ниндзя (т.е. Не генерировать make файлы).

Я не понимаю, как сделать что-либо из вышеперечисленного с чем-либо, кроме генератора CDT, в настоящее время, и единственный способ достичь работающего и усовершенствованного решения требует либо некоторого взлома на генераторе cmake, либо последующей обработки сгенерированного .cproject. избирательно в отношении того, что индексируется (т.е. не все CMAKE_SOURCE_DIRECTORY). Это еще один хак (поскольку cmake не имеет никакого способа прикрепить задачи после настройки к шагу настройки, мы должны форкнуть процесс и контролировать завершение родительского cmake. Это преднамеренное решение от имени cmake разработчики видимо и, возможно, это правильно)

Я, безусловно, очень ценю информацию любого лучшего подхода. Состояние поддержки cmake в Eclipse довольно мрачно для инструмента, который должен быть предназначен для разработки C++. Индексатор (по крайней мере, когда он не страдает от своих регулярных блокировок, требующих перезапуска Eclipse), на самом деле является одним из лучших вариантов, и Eclipse - очень хорошая среда для перехода по коду.

Ответ 6

Сделайте следующее:

mkdir debug (или выпуск, или любое другое имя)

cd debug
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_MAKE_ARGUMENTS=-j3 -DCMAKE_ECLIPSE_VERSION=4.1 ../

Убедитесь, что вы установили правильную версию Eclipse

Затем откройте папку из Eclipse (Open Projects)