Комментарии 20
Спасибо за интересный опыт. А что Вы имеете в виду под «но не работает даже комментирование.»?
Комплишен для CMake синтаксиса запланирован на самое ближайшее будущее. Как и автоматическое обновление CMakeLists.txt при добавлении/удалении файлов. Плюс есть еще несколько идей, как сделать поддержку CMake умнее, но это уже на будущее.
Комплишен для CMake синтаксиса запланирован на самое ближайшее будущее. Как и автоматическое обновление CMakeLists.txt при добавлении/удалении файлов. Плюс есть еще несколько идей, как сделать поддержку CMake умнее, но это уже на будущее.
Ну по Ctrl+/ строка не комментируется. Хотя если просматривать diff файла CMakeLists.txt перед коммитом, строку можно закомментировать. :)
Не работает переход на декларацию метода (по Ctrl+click или Ctrl+B). У меня работал только autocomplite по путям (т.е. когда нужно указать имя папки или файла в проекте). Но вообще CMake нормально работает — по крайней мере у меня все target'ы корректно сгенерировал и корректно запускает.
Вообще пока всем доволен.
P.S. А куда делись настройки проекта? В IDEA они по Ctrl+Shift+Alt+S открываются. Какой теперь use case по работы с проектом?
Не работает переход на декларацию метода (по 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, то есть не серый в дереве?
Про декларацию метода и неработающую навигацию можно пример? Правда ли, что что файл с декларацией входит в проект с точки зрения CLion, то есть не серый в дереве?
Уточню — я говорю про методы в CMakeLists.txt файле. Честно говоря не знаю, как они правильно называются, т.к. я больше по Java :)
Я имею ввиду, когда в CMakeLists.txt есть строчка
И в другом файле есть декларация этого метода:
То нельзя по Ctrl+click или Ctrl+B перейти на декларацию метода, пишет — «Cannot find declaration to go to».
Файлы входят в проект с точки зрения CLion, они не серые, в отличие от некоторых других файлов (т.е. есть с чем сравнить).
Если этого примера не достаточно, то можно скачать проект github.com/TimReset/arduino-cmake и посмотреть самим.
Я имею ввиду, когда в 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 и посмотреть самим.
И еще такой вопрос — а зачем Вы делаете Import? Почему просто не открыть проект в CLion (import актуален для не-cmake проектов)? Для этого надо просто указать верхнеуровневый CMakeLists.txt
Да, Вы знаете, Open project тоже работает :) Import делал по аналогии с IDEA — если проект не IDEA проект (т.е. не содержит в себе папку .idea) то его нужно импортировать. Тут так же поступил — это CMake проект без папки .idea и по этому его импортировал.
Спасибо за статью, надо обязательно попробовать.
На маке мне очень понравилось использовать XCode с EmbedXcode. Пара пассов с инклудами, и путями библиотек и вуаля!
На маке мне очень понравилось использовать XCode с EmbedXcode. Пара пассов с инклудами, и путями библиотек и вуаля!
Меня пока напрягает частично неработающий дебаг (https://youtrack.jetbrains.com/issue/CPP-1807) и прожорливость по процу. Та же idea на проекте в 1М строк (lucene-solr) работает куда шустрее и с меньшей нагрузкой на проц, чем clion на 150k строк (nginx).
Ну для Arduino проблема с дебагером — не проблема — там всё равно дебажить ни как нельзя :-D
Ребята из VisualMicro сделали свой костыль для дебага, но там у них не тру дебаг.
Ребята из 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+ работают.
Так что если кому-то удалось их решить, буду признателен, если поделитесь своим опытом.
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
Проблема в пункте 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, но не получается побороть:
У меня Arduino.app 1.6.5.
В example/CMakeLists.txt
$ ../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)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Программирование Arduino в CLion