• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Проект для Arduino-ESP8266 на основе CMake

Johnes

New member
Как узнал про портирование Wiring (Arduino SDK) на esp8266 - очень воодушевился, т.к. иногда (и даже скорее всего практически всегда) хочется быстрого программинга без вчитывания в datasheet'ы и изучении особенностей конкретных контроллеров. Но какое меня ждало разочарование при использовании Arduino-IDE я даже немогу описать тут приличными словами, это просто полное ................ Вполне возможно т.к. я работаю программистом я изнежен всякими специализированными IDE, и для обычной "домохозяйки" которой сбрендило попрограммить на Arduino возможностей стандартной Arduino-IDE достаточно, но для меня это было просто не выносимо.

После изучения вопроса об альтернативных IDE для Arduino с наскоку мне так ничего и не удалось сделать. Есть много в инете инструкций про прикручиванию notepard++ и других текстовых редакторов к Arduino, но как правило все они про windows, а мне хотелось бы не слазить с linux'а. Есть еще специализированные сборки Code::Blocks и Eclipse с поддержкой Arduino, но как в такую сборку добавить esp8266-Arduino не понятно.

В итоге читая просторы инета узнал что в нативной Arduino-IDE есть режим "внешнего редактора", после этого решил для редактора кода использовать Qt-Creator (в нем есть и дополнение кода и прыгание по исходникам ..... чего мне дико не хватало в Arduino-IDE). Qt-Creator, да и все другие мне известные IDE, умеют открывать проекты основанные на CMake. По этому я взял и по топорному накидал cmake файл в котором включил в проект все файлы текущего каталога проекта и в include-директории включил все директории библиотек esp8266. Может кому то будет мой опыт полезен. Но т.к. я не являюсь знатоком cmake и тем более arduino-esp8266, то может быть автор проекта "Arduino-IDE для esp8266" или люди знающие данную тему, напишут более вменяемый шаблон cmake файла. Это дало бы возможность использования универсальных IDE для С++ с данным проектом.

Код:
cmake_minimum_required(VERSION 2.8)
project( esp8266 CXX)

#set_target_properties(esp8266 PROPERTIES LINKER_LANGUAGE CXX)
#set( CMAKE_CXX_FLAGS_RELEASE "-O2 -g3 -DPOSIX -DNDEBUG -D_NDEBUG -Wall -pedantic -Wno-long-long -Wno-unknown-pragmas -lpthread -rdynamic" CACHE STRING "Release options." FORCE )

set(esp8266_SRC "/home/user/.arduino15/packages/esp8266/hardware/esp8266/1.6.5-947-g39819f0/libraries/")
set(arduino_HOME "/home/user/arduino-1.6.6/hardware/arduino/avr/cores/arduino")

include_directories(
${esp8266_SRC}/ESP8266WiFi/src
${esp8266_SRC}/Adafruit_ILI9341
${esp8266_SRC}/DNSServer/src
${esp8266_SRC}/EEPROM
${esp8266_SRC}/ESP8266httpUpdate/src
${esp8266_SRC}/ESP8266mDNS
${esp8266_SRC}/ESP8266SSDP
${esp8266_SRC}/ESP8266WebServer/src
${esp8266_SRC}/ESP8266WiFiMesh/src
${esp8266_SRC}/Hash/src
${esp8266_SRC}/OneWire
${esp8266_SRC}/SD/src
${esp8266_SRC}/Servo/src
${esp8266_SRC}/SPI
${esp8266_SRC}/TFT_Touch_Shield_V2
${esp8266_SRC}/Ticker
${esp8266_SRC}/Wire
${CMAKE_HOME_DIRECTORY}/arduino-1.6.6/hardware/arduino/avr/cores/arduino
${CMAKE_SOURCE_DIR}
)

file( GLOB_RECURSE SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h" "*.hpp" "*.cpp" "*.ino" )

add_executable( ${PROJECT_NAME} ${SOURCES} )
Сам проект организуется следующим образом:
в файл <имя проекта>.ino вносятся только include с перечнем используемых библиотек проекта
весь код размещается в дургих .cpp и .h файлах на ваше усмотрение
Соответственно в нативном Ardino-IDE включаем режим внешнего редактора. Весь код правим в своем IDE в котором открыли cmake-проект, а компилируем и прошиваем с помощью Arduino-IDE ....... Это конечно не так удобно как если бы и компиляция с инсталляцией были бы сделаны в cmake файле проекта, но мое "кун-фу" еще не доросло чтобы сделать такой cmake файл....... может найдутся знающие люди и исправят это...... очень надеюсь ))
 

Johnes

New member
Кстати,. а может кто нибудь подскажет как включить линковку stdc++.a в скетче, чтобы использовать STL - понимаю что это для МК как из пушки по воробьям, но все таки у esp8266 вроде как есть ресурсы и можно было бы их убить частично и на STL.
 
Сверху Снизу