Не удалось найти заголовки из установленной библиотеки platformio
Я написал библиотеку, которую собираюсь использовать в нескольких проектах, и опубликовал ее через platform.io система управления библиотекой.
https://platformio.org/lib/show/12820/FastLED-SectionManager
Это первый раз, когда я публикую через platform.io (впервые я опубликовал какую-либо библиотеку c++). Я перечитал platform.io документы по созданию библиотеки и структурированию моей библиотеки соответствующим образом с моими заголовками в каталоге include и файлами реализации в каталоге
src
:
И создал следующий файл library.json:
{
"name": "FastLED-SectionManager",
"version": "1.0.2",
"description": "A led strip index manager that allows for logical groupings of strip sections.",
"repository": {
"type": "git",
"url": "[email protected]:chris-schmitz/FastLED-Section-Manager.git"
},
"authors": [
{
"name": "Christopher Schmitz",
"email": "[email protected]",
"url": "https://light-inspiration.com/"
}
],
"homepage": "https://github.com/chris-schmitz/FastLED-Section-Manager",
"license": "MIT",
"dependencies": {
"fastled/FastLED": "^3.4.0"
},
"frameworks": "*",
"platforms": "*"
}
Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю библиотеку в другом проекте через platform.io и попробуйте включить заголовок, заголовок не может быть найден:
Я дважды проверил каталог pio для проекта, и я определенно вижу файлы заголовка и реализации:
Так что я не знаю почему platform.io не могу найти заголовки.
Я не могу понять, что я делаю не так. есть идеи?
@Chris Schmitz, 👍1
Обсуждение1 ответ
Сегодня утром я проснулся и снова просмотрел документацию.
Часть, которую я неправильно прочитал, была такой:
Мы рекомендуем использовать папку src для исходных файлов C/C++ и папку include для заголовков. Вы также можете иметь вложенные подпапки в src или include.
У меня были заголовки, хранящиеся в папке lib
:facepalm:
Я попытался поискать в документах platformio объяснение папок lib vs include vs src (я знал, что видел это в какой-то момент), но не смог его найти.
Затем я вспомнил, что прочитал назначение каждого каталога в файлах Readme в самой структуре проекта, созданной при создании нового проекта platformio:
Суть в том, что:
src
: ваши скомпилированные файлы, то есть вашиcpp
-файлы- Стоит отметить, что вы можете просто засунуть сюда все файлы, и это сработает
lib
: библиотеки, закрытые для вашего проекта/сама библиотекаinclude
: файлы объявлений и определения макросов, то есть ваши заголовочные файлы
Это объясняет, как заголовочные файлы в каталоге lib работали в самом проекте SectionManager, но не работали при использовании SectionManager в качестве установленной библиотеки;
каталог lib является только "видимым" локальным для проекта, поэтому, когда я пытался включить заголовочные файлы из другого проекта, они не могли быть найдены.
Поэтому в моем проекте SectionManager я переместил заголовки в каталог include, набрал номер версии и опубликовал:
Затем я переключился на свой основной проект, в который я втягиваю библиотеку SectionManager, скорректировал версию зависимости, чтобы включить незначительный удар, обновил, и теперь это работает!
Имеет смысл, я просто все еще привыкаю к c++ и platform.io.
- Добавить библиотеку в проект CLion
- Создайть библиотеку при использовании PlatformIO
- Лучший способ «взломать» библиотеку, не разветвляя ее
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Существуют ли библиотеки сглаживания сигналов для Arduino?
в вашей библиотеке есть опечатка main.cpp ...
хочу изменить направление в каждой второй строке с помощью третьего логического аргумента
....sectionManager.addRangeToSection(0, 0, 3, true);
.... логическое значение-4-й аргумент, @jsotola