Ответ 1
KDevelop - отличная среда разработки с отличной поддержкой CMake.
Что касается Eclipse - запустите это:
cd <project_dir>
cmake -G "Eclipse CDT4 - Unix Makefiles" ./
Это создаст для вас проект Eclipse.
У меня есть собственный проект CMake, и я хочу использовать Eclipse IDE с ним, чтобы облегчить мое развитие, предоставив автозаполнение и другие функции. Я не могу найти, как импортировать проект CMake в Eclipse.
PS: Я открыт для предложений для других IDE, которые хорошо работают с CMake.
KDevelop - отличная среда разработки с отличной поддержкой CMake.
Что касается Eclipse - запустите это:
cd <project_dir>
cmake -G "Eclipse CDT4 - Unix Makefiles" ./
Это создаст для вас проект Eclipse.
Разрабатываем ответ на стрелку для 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 смог получить изменения.Я только что узнал, что генератор проекта CMakes CDT, кажется, не поддерживается и вызывает различные проблемы - особенно, кажется, с более поздними версиями Eclipse (из которых я также имел свою долю).
Рекомендуется использовать cmake4eclipse (доступный на Eclipse Marketplace), который использует CMakeLists.txt
качестве единственного источника правды. Это также позволяет вам хранить исходное дерево отдельно от вашего рабочего пространства.
Одно простое решение на моем рабочем столе:
New → New C/C++ Project → Empty or Existing CMake Project
выберите имя проекта (например, проект).Короче говоря, только генератор CDT в настоящее время является жизнеспособным вариантом. Зачем? Просто потому, что Eclipse должен получить определения препроцессора, включить пути и какие файлы включены в сборку откуда-то. В противном случае мы в конечном итоге проиндексировали бы все, и плохо, без определения правильных макросов. Если у вас есть повышение в репо или дерево среднего или большого размера, индексирование всего просто не будет работать в реальном мире - в любом случае не со скоростью и надежностью индексатора Eclipse. Поскольку в наши дни большинство людей, вероятно, хотят использовать Ninja для сборок (кто хочет подождать теплую сборку 30+ секунд, просто чтобы посмотреть, что грязно?), Это исключает единственный способ импорта этой информации через make файлы, которые в настоящее время поддерживаются., если вы не хотите генерировать две отдельные системы сборки каждый раз при настройке, что сделает автоматизацию реальной проблемой (учитывая, что cmake перезапускается сам при изменении списков).
В Eclipse Photon есть новая опция для прямого импорта проектов cmake. Однако на этом этапе я бы сказал, что это выглядит бесполезно для чего-то другого, кроме тривиальных проектов, поскольку, похоже, нет никакого способа импортировать уже настроенный каталог сборки или куда-либо установить переменные и аргументы, которые передаются в CMake. Я пока не знаю, как на самом деле работает эта функция, но может показаться, что Eclipse должен выполнять синтаксический анализ иерархии CMakeLists, следуя логике, чтобы увидеть, какие вызовы add_subdirectory() выполняются, и какие определения определяет препроцессор, что, по-видимому, подход без будущего, учитывая, что для этого у нас есть режим сервера cmake, и он, несомненно, потребует повторной реализации почти всего синтаксического анализатора языка cmake в Eclipse, чтобы эта работа работала.
Пока что единственное жизнеспособное решение, которое, по-видимому, отвечает требованиям реального мира, заключается в использовании генератора CDT cmake. Он может получить вышеупомянутую информацию непосредственно из cmake и записать ее в файл .cproject. Как упоминалось ранее, он не поддерживается и использует устаревший шаблон для .cproject, что вызывает некоторые проблемы.
Мои собственные минимальные требования для поддержки cmake:
Я не понимаю, как сделать что-либо из вышеперечисленного с чем-либо, кроме генератора CDT, в настоящее время, и единственный способ достичь работающего и усовершенствованного решения требует либо некоторого взлома на генераторе cmake, либо последующей обработки сгенерированного .cproject. избирательно в отношении того, что индексируется (т.е. не все CMAKE_SOURCE_DIRECTORY). Это еще один хак (поскольку cmake не имеет никакого способа прикрепить задачи после настройки к шагу настройки, мы должны форкнуть процесс и контролировать завершение родительского cmake. Это преднамеренное решение от имени cmake разработчики видимо и, возможно, это правильно)
Я, безусловно, очень ценю информацию любого лучшего подхода. Состояние поддержки cmake в Eclipse довольно мрачно для инструмента, который должен быть предназначен для разработки C++. Индексатор (по крайней мере, когда он не страдает от своих регулярных блокировок, требующих перезапуска Eclipse), на самом деле является одним из лучших вариантов, и Eclipse - очень хорошая среда для перехода по коду.
Сделайте следующее:
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)