Как настроить Eclipse CDT для cmake? - PullRequest
18 голосов
/ 26 февраля 2012

Как настроить Eclipse "Helios" с плагином CDT для cmake?

cmake all 
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not    exist.

Eclipse всегда хочет использовать опцию 'all', и я не знаю, как остановить его, чтобы он не использовался.

Я видел, что в разделе «Поведение при сборке» в «Предпочтениях» была опция «все».Я удалил это, но оно все еще работает неправильно (эта же ошибка).

Ответы [ 6 ]

28 голосов
/ 12 марта 2012

В Eclipse-CDT вы не создаете проекты cmake, но импортируете проекты cmake.Вот что вы должны сделать:

  1. Скажите, что источник вашего проекта CMake с именем "Planner" находится в D:/javaworkspace/src/Planner

  2. Создатьпапка (папки должны быть параллельны друг другу): D:/javaworkspace/build/Planner

  3. Перейдите в папку D:/javaworkspace/build/Planner и запустите CMake с помощью генератора Eclipse:

    cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
    

    Это создаст файлы make для вашего проекта Planner.

  4. Чтобы импортировать это в Eclipse, выполните следующие действия:

    Файл -> Импорт -> Существующий код в виде Makefileпроект

    и выберите D:/javaworkspace/build/Planner (выходная папка сборки с файлами make) в качестве «Местоположения существующего кода»

Однако, глядя на ваши пути, кажется,мне, что вы работаете на Windows.В Windows CMake может генерировать проекты Visual Studio.Если вы хотите использовать CMake, я предлагаю сначала создать проект "hello world" с использованием CMake (помните, Eclipse не создает проекты CMake, вы должны вручную создать файл CMakeLists.txt)

12 голосов
/ 02 августа 2016

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

Части из текста справки cmake4eclipse:

Для CMake для CDT требуется существующий проект C / C ++ для работы.Это позволяет использовать cmake в качестве генератора для make-файлов вместо генератора, встроенного в CDT.Подробности смотрите в разделе Включение генерации сценария CMake.

Чтобы настроить новый проект с существующим исходным кодом, выполните следующие действия:

  • Проверьте свой исходный код.
  • Откройте мастер создания нового проекта C / C ++ («Файл» => «Новый» => «Проект C» или «Файл» => «Новый» => «Проект C ++»).
    • Убедитесь, что местоположение проекта указывает на корневой каталог извлеченных файлов
    • Для типа проекта выберите Исполняемый файл.Вы также можете выбрать «Общая библиотека» или «Статическая библиотека», при этом не имеет значения, что информация поступает из вашего CMakeLists.txt, но CDT требует этого.Не выбирайте проект Makefile здесь!
    • Завершите создание проекта.
  • Откройте диалоговое окно «Свойства проекта».
    • Выберите узел «Сборка C / C ++» и вкладку «Настройки компоновщика» и убедитесь, что флажок «Генерировать Makefiles» установлен автоматически.
    • Выберите узел «Редактор цепочек инструментов» и установите «CMake Make»Builder "в качестве текущего сборщика.
    • Если ваш CMakeLists.txt верхнего уровня не находится в корневом каталоге ваших извлеченных файлов, выберите" C / C ++ General "" Путь и символы "и узел"Расположение источника "вкладка.Затем настройте исходную папку так, чтобы она указывала на каталог, содержащий ваш файл CMakeLists.txt.Это скажет индексатору CDT сканировать файлы заголовков в вашем проекте.
  • Pro Совет. Добавьте файл CMakeLists.txt в корневой каталог извлеченных файлов, если вы пропуститеПапка Binaries или Archives в представлении проектов C / C ++.Постройте проект.Это при необходимости вызовет cmake для генерации сценариев сборки, а затем вызовет make.

Не пытайтесь импортировать проект Eclipse, который вы создали вручную, используя cmake -G Eclipse CDT4 - Makefiles Unix,так как это приведет вас к классическому маршруту проекта Makefile!

Самое лучшее в этом плагине - то, что он может использовать экспортированные опции компилятора cmake для индексации вашего проекта.

  • Откройте диалоговое окно «Свойства проекта».
    • Выберите узел «C / C ++ General» и «Препроцессор содержит пути, макросы и т. Д.»Вкладка.Выберите «CMAKE_EXPORT_COMPILE_COMMANDS Parser» и переместите его в начало списка.
    • Нажмите «OK», чтобы закрыть диалоговое окно.Убедитесь, что вы запустили одну сборку и воссоздали индекс.

Provider tab

Устранены все неприятные проблемы с индексатором, которыеменя раздражало, когда я использовал только «Параметры компиляции встроенного компилятора GCC» и добавил такие вещи, как «-std = c ++ 14» в «Команду для получения спецификаций компилятора».

5 голосов
/ 22 февраля 2017

Использование CMAKE в проекте Eclipse Makefile (на win):

1) создать новый проект * Makefile с существующим кодом"

2) изменить настройки компоновщика (ProjectСвойства-> C / C ++ Build-> Настройки Builder):

  • Команда построения : cmd / c "mkdir $ {PWD} & cd / D $ {PWD} && $ {CMAKE} -G "Makeix-файлы Unix" $ {ProjDirPath} && make "

  • Каталог сборки : $ {workspace_loc: / IoT_SDK} / build /$ {ConfigName}

Вот и все!

2 голосов
/ 21 мая 2015

В дополнение к принятому ответу необходимо указать версию затмения.

Затмение Луны (4.4):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.4 ../../src/Planner

Затмение Кеплера (4.3):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.3 ../../src/Planner
1 голос
/ 12 июля 2015

Еще один совершенно другой метод.

  • Вручную создайте пустой проект Eclipse.

  • Ссылка на исходный каталог через Свойства проекта -> C / C ++Общие -> Пути и символы -> Местоположение источника.

  • В каталогах сборки Debug и Release создайте «Make Targets» (используя «Make Targets View»).Оставьте поле 'Make Target' пустым и установите для поля 'command' значение cmake -G "Unix Makefiles" <path/to/the/sources>.

  • Когда вы дважды щелкните созданный вами объект 'Make Target', он долженвызвать вызов cmake внутри папок Debug / Release.

  • В «Свойствах проекта -> Сборка C / C ++» отключить встроенный генератор make-файлов.

Теперь нормальная сборка должна работать.Он также будет регистрировать любые изменения в файлах CMakeLists.txt (насколько это возможно для CMake).

Возможно, более подробное описание: https://stackoverflow.com/a/38140914/4742108

0 голосов
/ 29 июня 2019

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

Это потому, что CMAKE использовал «файлы ответов», которые скрывают все включения внутри этих файлов, вместо этого используйте его напрямую (-IPATH_TO_SOME_DIR)

Чтобы отключить «файл ответов», я использовал следующие команды:

SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES NO)
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES NO)

Чтобы заставить CMAKE показывать выполнение gcc / g ++, я изменил цель make build на "все VERBOSE = 1". Обратите внимание, что это не требуется при использовании cmake4eclipse.

У меня есть затмение в версии 2018-12 (4.10.0) с CDT в версии 9.6.

...