Как настроить Eclipse CDT для cmake?

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

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

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

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

Ответ 1

В 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)

Ответ 2

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

Части из справочного текста cmake4eclipse:

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

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

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

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

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

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

Provider tab

Это исправило все неприятные проблемы с индексатором, которые раздражали меня, когда я использовал только "Настройки встроенного компилятора GCC CDT" и добавил такие вещи, как "-std = C++ 14" в "Команда для получения спецификаций компилятора".

Ответ 3

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

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

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

  • Команда сборки: cmd/c "mkdir ${PWD} и cd/D ${PWD} & ${CMAKE} -G" Unix Makefiles "$ {ProjDirPath } && make"

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

Что все!

Ответ 4

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

Eclipse Luna (4.4):

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

Eclipse Kepler (4.3):

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

Ответ 5

Другой совершенно другой метод.

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

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

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

  • При двойном щелчке по созданию "Make Target", который вы создали, он должен вызывать вызовы cmake внутри dug-серверов Debug/Release.

  • В "Свойства проекта → C/С++ Build" отключить встроенный генератор make файлов.

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

Возможно, более подробное описание: fooobar.com/questions/33854/...

Ответ 6

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

Это потому, что 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 на "all VERBOSE = 1". Обратите внимание, что это не нужно, когда вы используете cmake4eclipse.

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