Как использовать внешние библиотеки в CLion

Я хотел бы использовать внешние библиотеки, загружаемые средой IDE Arduino, в расположение альбома для разработки по умолчанию (~/Arduino/libraries/).

Если вы откроете менеджер библиотек в Arduino IDE и установите внешнюю библиотеку (например, библиотеку датчиков DHT 1.3.7 и ее зависимость Adafruit Unified Sensor 1.0.3), она будет загружена в папку sketchbook, и вы сможете свободно использовать их в случае написания кода в Arduino IDE.

Однако мне очень нравится автоматическое завершение кода, управление исходным кодом в репозитории GIT, форматирование исходных строк и т.д. Такие функции не предоставляются средой IDE Arduino, поэтому я перешел на CLion.

Я установил плагин CLion и Arduino поддержки 1.4.4 и создал новый проект скетча Arduino.

Структура проекта:

.
+--cmake
   +--Platform
      +--Arduino.cmake
   +--ArduinoToolchain.cmake
+--libs
   +--Adafruit_Sensor
      +--Adafruit_Sensor.h
      +--library.properties
      +--README.md
   +--DHT
      +--DHT.cpp
      +--DHT.h
      +--DHT_U.cpp
      +--DHT_U.h
      +--keywords.txt
      +--library.properties
      +--README.md
+--CMakeLists.txt
+--first_test_project.ino
+--User_Setup.h

first_test_проект.ino:

#include <Arduino.h>
#include "User_Setup.h"
#include <libs/Adafruit_Sensor/Adafruit_Sensor.h>
#include <libs/DHT/DHT.h>

DHT *dht;

void setup() {
    dht = new DHT(7, DHT22);
}

void loop() {

}

Поэтому я скопировал загруженные библиотеки из папки ~/Arduino/libraries в папку проекта в папке libs.

Когда я пытаюсь загрузить код на плату Arduino, в журнале появляется следующее:

undefined reference to `DHT::DHT(unsigned char, unsigned char, unsigned char)'

Не мог бы кто-нибудь, пожалуйста, объяснить, что здесь не так.

Большое вам спасибо!

, 👍4

Обсуждение

Вы уверены, что используете правильную сигнатуру метода, похоже, что эта сигнатура метода конструктора не существует: dht = новый DHT(7, DHT22); принимает 2 аргумента, по сравнению с тем, что жалуется, 3 аргумента, что-то не так, @Omar S.


2 ответа


0

Вы добавили свои библиотеки в файлы cmake?

У меня нет никакого опыта работы с CLion, но неопределенная ссылка обычно означает, что компоновщик не смог найти функцию/класс, который вы используете.

Поэтому убедитесь, что библиотеки скомпилированы и компоновщик знает, где найти объектные файлы.

,

1

На мой взгляд, самый простой способ для новичка-использовать Platformio, он автоматически настраивает проект CLion.

Дополнительную информацию смотрите в документах.

,

у вас есть какая-либо ссылка для настройки платформы ввода-вывода, я использую CLion в качестве редактора и arduino IDE для компиляции и развертывания на микроконтроллере, если есть какое-либо доступное руководство, было бы полезно поделиться. Спасибо, @Omar S.

@Омарс. смотрите отредактированный ответ. Он также настраивает задачи сборки для загрузки, поэтому нет необходимости использовать Arduino IDE. Но внимательно прочитайте документы: не забудьте нажать горячую клавишу "сборка" для всех задач вместо "выполнить"., @artem