Добавить библиотеку в проект CLion
У меня есть новый проект, созданный с помощью PlatformIO в CLion. Я скопировал библиотеку Servo-1.1.8 в каталог include.
#include <Arduino.h>
#include "Servo-1.1.8/src/Servo.h"
Servo servo;
void setup() {
}
void loop() {
}
Однако я получаю ошибку компиляции:
====================[ Build | Production | uno ]================================
C:\Users\USER_NAME\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\213.5744.254\bin\cmake\win\bin\cmake.exe --build C:\Users\USER_NAME\Documents\Arduino\MultiServoCallibration\cmake-build-uno --target Production
[1/1] cmd.exe /C "cd /D C:\Users\USER_NAME\Documents\Arduino\MultiServoCallibration && platformio -c clion run -euno"
FAILED: CMakeFiles/Production C:/Users/USER_NAME/Documents/Arduino/MultiServoCallibration/cmake-build-uno/CMakeFiles/Production
cmd.exe /C "cd /D C:\Users\USER_NAME\Documents\Arduino\MultiServoCallibration && platformio -c clion run -euno"
Processing uno (platform: atmelavr; board: uno; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr 5.1.0
- toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\uno\src\main.cpp.o
Linking .pio\build\uno\firmware.elf
C:\Users\USER_NAME\AppData\Local\Temp\ccmN7v6f.ltrans0.ltrans.o: In function `_GLOBAL__sub_I_servo':
<artificial>:(.text.startup+0x98): undefined reference to `Servo::Servo()'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\uno\firmware.elf] Error 1
========================== [FAILED] Took 1.18 seconds ==========================
ninja: build stopped: subcommand failed.
Я никогда раньше не использовал CMake, так что это вполне может быть что-то очень простое, например, добавление строки в какую-нибудь конфигурацию для включения этой библиотеки.
@BanksySan, 👍1
Обсуждение1 ответ
Как бы то ни было, я задал аналогичный вопрос на StackOverflow, полагая, что немного другая толпа может включать кого-то, кто использует CLion + PlatformIO для работы без Arduino и имеет более авторитетное мнение по этой теме.
Я понятия не имею, действительно ли это безопасно или хорошая идея, но как бы то ни было, я смог добавить библиотеку Arduino в свой проект, выполнив следующее:
- Установите PlatformIO с помощью встроенного кода VS, установите CLion, а затем настройте CLion на использование PlatformIO.
- Используя CLion, создайте новый PlatformIO Arduino sketch. Позвольте CLion вращать свои колеса, делать некоторые вещи, которые могли бы или не могли бы в конечном итоге иметь значение, и убедитесь, что он находится в состоянии, когда он может успешно создавать и развертывать с помощью CLion. Я лично просто вызвал Serial.start(9600) и Serial.println("что-то") для вывода в serial, а затем проверил, что это действительно работает.
- Выйдите из CLion и запустите VS Code. Добавьте папку, содержащую скетч, созданный на шаге 2, в его рабочую область.
- Используйте VS Code для добавления библиотеки. Дождитесь завершения загрузки и выйдите из VS Code.
- Перезапустите CLion и попробуйте использовать новую библиотеку.
Имейте в виду, я пока абсолютно не знаю, кошерно это или нет. У меня сложилось впечатление, что когда вы используете PlatformIO с CLion, 100% всего на самом деле управляется PlatformIO, и все, что делает сам CLion, - это заглушка через вызов для запуска CMake. Предполагая, что VS Code работает одинаково, теоретически это должно быть нормально... но до тех пор, пока кто-то, близко знакомый с PlatformIO и тем, как он интегрируется как с CLion, так и с VS-кодом, не убедит меня в этом, я немного нервничаю по этому поводу.
Тем не менее... если это действительно безопасно, это, вероятно, лучший способ добавить библиотеку Arduino в проект CLion-PlatformIO с тех пор (AFAIK) Сам CLion не имеет абсолютно никакой сравнимой функциональности (через плагин PlatformIO или иным образом), и я столкнулся с несколькими библиотеками для использования SSD1306 OLED, которые являются серьезной проблемой для копирования в проект вручную из их репозитория Github (потому что библиотека OLED зависит от чьей-то графической библиотеки, которая сама по себе зависимости от чужой математической библиотеки и библиотеки меню библиотека меню имеет зависимости от еще одной или двух библиотек... что ж, идея вам понятна. Боль. Точная причина, по которой такие вещи, как Gradle и Maven, существуют для Android и Java, и CMake теоретически теперь существует для C (++), хотя он все еще кажется довольно бесполезным в Arduino-land. ;-)
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Ошибка: function was not declared in this scope when using a library without classes
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- Где следует хранить измененный файл «pins_arduino.h» для компиляции Arduino IDE?
- Ошибка при компиляции скрипта: "avr-g++: error: CreateProcess: No such file or directory"
- Ошибка компиляции ESP8266: "previous declaration of 'HTTPMethod HTTP_HEAD'"
- Невозможно установить библиотеку esp_camera
- Ошибка компиляции библиотеки
в Servo.cpp файл не компилируется, @Juraj
@Juraj Да. Если я закомментирую строку " Servo servo;", то она компилируется. Однако без него это не очень полезно., @BanksySan