Как стать автором
Обновить

Комментарии 20

Спасибо за интересный опыт. А что Вы имеете в виду под «но не работает даже комментирование.»?

Комплишен для CMake синтаксиса запланирован на самое ближайшее будущее. Как и автоматическое обновление CMakeLists.txt при добавлении/удалении файлов. Плюс есть еще несколько идей, как сделать поддержку CMake умнее, но это уже на будущее.
Ну по Ctrl+/ строка не комментируется. Хотя если просматривать diff файла CMakeLists.txt перед коммитом, строку можно закомментировать. :)
Не работает переход на декларацию метода (по Ctrl+click или Ctrl+B). У меня работал только autocomplite по путям (т.е. когда нужно указать имя папки или файла в проекте). Но вообще CMake нормально работает — по крайней мере у меня все target'ы корректно сгенерировал и корректно запускает.
Вообще пока всем доволен.
P.S. А куда делись настройки проекта? В IDEA они по Ctrl+Shift+Alt+S открываются. Какой теперь use case по работы с проектом?
Да, шорткат не работает действительно в CMake, только в C/C++ коде. Спасибо. Постараемся исправить в будущем (соб-но, ишью youtrack.jetbrains.com/issue/CPP-469).

Про декларацию метода и неработающую навигацию можно пример? Правда ли, что что файл с декларацией входит в проект с точки зрения CLion, то есть не серый в дереве?
Уточню — я говорю про методы в CMakeLists.txt файле. Честно говоря не знаю, как они правильно называются, т.к. я больше по Java :)
Я имею ввиду, когда в CMakeLists.txt есть строчка
print_board_list()

И в другом файле есть декларация этого метода:
function(PRINT_BOARD_LIST)
    foreach(PLATFORM ${ARDUINO_PLATFORMS})
        if(${PLATFORM}_BOARDS)
            message(STATUS "${PLATFORM} Boards:")
            print_list(${PLATFORM}_BOARDS)
            message(STATUS "")
        endif()
    endforeach()
endfunction()

То нельзя по Ctrl+click или Ctrl+B перейти на декларацию метода, пишет — «Cannot find declaration to go to».
Файлы входят в проект с точки зрения CLion, они не серые, в отличие от некоторых других файлов (т.е. есть с чем сравнить).
Если этого примера не достаточно, то можно скачать проект github.com/TimReset/arduino-cmake и посмотреть самим.
А, тогда понятно. Для CMake методов пока не работает. Это тоже одна из мыслей на будущее )
И еще такой вопрос — а зачем Вы делаете Import? Почему просто не открыть проект в CLion (import актуален для не-cmake проектов)? Для этого надо просто указать верхнеуровневый CMakeLists.txt
Да, Вы знаете, Open project тоже работает :) Import делал по аналогии с IDEA — если проект не IDEA проект (т.е. не содержит в себе папку .idea) то его нужно импортировать. Тут так же поступил — это CMake проект без папки .idea и по этому его импортировал.
Это хорошо, что работает )
.idea создастся при открытии проекта. Import функциональность мы добавили, чтобы те, у кого С/С++ проект не на базе CMake построен, могли попробовать CLion для своего проекта, импортировав в CMake билд-систему.
Спасибо за статью, надо обязательно попробовать.
На маке мне очень понравилось использовать XCode с EmbedXcode. Пара пассов с инклудами, и путями библиотек и вуаля!
Меня пока напрягает частично неработающий дебаг (https://youtrack.jetbrains.com/issue/CPP-1807) и прожорливость по процу. Та же idea на проекте в 1М строк (lucene-solr) работает куда шустрее и с меньшей нагрузкой на проц, чем clion на 150k строк (nginx).
Ну для Arduino проблема с дебагером — не проблема — там всё равно дебажить ни как нельзя :-D
Ребята из VisualMicro сделали свой костыль для дебага, но там у них не тру дебаг.
Коль JTAG'а нет, то не подебажишь нормально, да. Но для тех платформ, где он есть в clion по этому поводу есть ещё youtrack.jetbrains.com/issue/CPP-871
Расскажу о том, какие могут возникнуть сложности с настройкой JetBrains CLion + Arduino + Windows 7, и как их решать.

1) CLion под Windows требует выставить правильное окружение в настройках
File -> Settings => Build, Execudion, Deployment -> Toolchain
Правильные настройки можно увидеть на скриншоте
habrastorage.org/files/d67/ba0/bb6/d67ba0bb63a54794abb5ed049a3dc4fb.png
Так вот там есть две опции MinGW и Cygwin.
С cygwin ничего не получится, так как при запуске через cywgin пути в системе меняются на /cygdrive/c/…
и при попытке скомпиллировать ваши исходники avr-g++ сразу же будет жаловаться на то, что файла
с исходниками она найти не может. Другими словами make из cygwin работает с путями /cygdrive/c/, а
весь toolkit из Arduino IDE нет, им нужны обычные пути c:\…
Поэтому нужно поставить MinGW

1.1) Сначала нужно скачать его по ссылке sourceforge.net/projects/mingw/files/Installer
Тестировалось на версии mingw-get-0.6.2-mingw32-beta-20131004-1
Затем установить с дефолтными настройками

1.2) Запустить MinGW Installation Manager

1.3) Выбрать пакеты для установки из Basic Setup
— mingw-developer-toolkit
— mingw32-base
— mingw32-gcc-g++
— msys-base
и нажать Apply Changes

2) В переменную окружения Path можно ничего не прописывать (несмотря на инструкцию с github.com/queezythegreat/arduino-cmake)
И даже более того, возможно потребуется даже убрать лишнее.

2.1) Есть проблема со сборкой через cmake, если в путях прописана Anaconda (https://store.continuum.io/cshop/anaconda/)
А по-умолчанию anaconda прописывается в путях, чтобы можно было вызывать python из командной строки.
Так вот в anaconda есть свой toolkit с make и прочими вещами, поэтому arduino-cmake находит не путь к Arduino SDK, а путь к Anaconda
По аналогии такие проблемы могут возникнуть с любым другим софтом
Решается такая проблема исключением из путей (как из переменной windows окружения Path для пользователя так и для системы)
Но это не всё, после этого нужно почистить кеш cmake
%USERPROFILE%\.clion10\system\cmake\generated\*

2.2) В Arduino SDK есть файл sh.exe, о котором может предупредить CLion на той же странице настроек toolchain'а.
Поэтому и путь к Arduino SDK тоже нужно исключить из путей окружения windows

После решения этих двух проблем, JetBrains CLion + Arduino нормально работает на Windows 7.
А для коннекта к COM порту можно использовать PuTTY + Pageant с сохранёнными настройками для используемых COM портов.

Но так же остаются пока не решённые проблемы.

3) arduino-cmake не работает с последними версиями Arduino (тестировалось на 1.6.1 и 1.6.3)
Это можно решить, подправив нужным образом cmake файлы, но пока эта проблема не решена.
Почему это проблема — в последних версиях Arduino IDE более новый toolkit, и в частности
некоторые конструкции C++ не работают в Arduino IDE 1.0.6, а в 1.6.1+ работают.

Так что если кому-то удалось их решить, буду признателен, если поделитесь своим опытом.
Уточнения и дополнения:

Проблема в пункте 2.1 решена этим pull request'ом
github.com/queezythegreat/arduino-cmake/pull/109

Поддержка 1.5 заявлена в этом pull request'е
github.com/queezythegreat/arduino-cmake/pull/104

И форк оригинального arduino-cmake с поддержкой 1.5
github.com/blemasle/arduino-cmake
Добавил экспериментальную поддержку Arduino IDE 1.6, благодаря готовым pull requests из оригинального проекта, и написал README.txt с деталями по установке и настройке github.com/altexdim/arduino-cmake
Я тут Вас плюсую потихоньку :), но решил таки сказать явно — Спасибо за проделанную работу!
Пытаюсь запустить пример с github.com/queezythegreat/arduino-cmake, но не получается побороть:

$ ../configure Project Sources: /Users/romeo/myProjects/arduino/autoclass/arduino-cmake CMake Executable: /Applications/CMake.app/Contents/bin/cmake Building within build directory -- -- Generating blink_original CMake Error at cmake/Platform/Arduino.cmake:830 (message): Invalid Arduino board ID (uno), aborting. Call Stack (most recent call first): cmake/Platform/Arduino.cmake:1071 (get_arduino_flags) cmake/Platform/Arduino.cmake:516 (setup_arduino_target) example/CMakeLists.txt:45 (generate_arduino_firmware)

У меня Arduino.app 1.6.5.

В example/CMakeLists.txt

set(ARDUINO_DEFAULT_BOARD uno)
boards.txt лежит в ${ARDUINO_SDK_PATH}/hardware/arduino/avr/
Потому что в github.com/queezythegreat/arduino-cmake нет поддержки arduino ide 1.5+
Пробуйте github.com/altexdim/arduino-cmake
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории