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

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

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

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

Я видел, что в разделе "Построение поведения", в "Настройках" была опция "все". Я стёр это, но всё равно работает не так (эта же ошибка).

5 ответов

Решение

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

Что лучше всего сработало для меня, так это 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 - Makefile Unix, так как это приведет вас к классическому маршруту проекта Makefile!

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

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

Вкладка провайдера

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

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

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

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

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

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

Это все!

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

Затмение Луны (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

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

Это потому, что 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.

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

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

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

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

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

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

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

Может быть, более подробное описание: /questions/36727686/razrabotka-qt-na-linux-s-ispolzovaniem-eclipse/36727698#36727698

Это старый вопрос, но он заслуживает некоторых обновлений.

Во-первых, человек, создавший cmake4eclipse, добавил в CDT функцию синтаксического анализа. Эта функция / ошибка была помечена как "Решено-Исправлено" 5 августа 2020 г. (5 августа 2020 г.), поэтому она должна войти в версию Eclipse, которая должна выйти в следующем месяце. См.: https://bugs.eclipse.org/bugs/show_bug.cgi?id=559674

Также следует отметить, что вы можете вручную запустить синтаксический анализ файлов:

Параметры конфигурации / Исходный индекс и файлы заголовков, открытые в редакторе

Параметры конфигурации / Исходный индекс и файлы заголовков, открытые в редакторе

Другие вопросы по тегам