• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу