Не удалось найти заголовки из установленной библиотеки platformio

library 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 и попробуйте включить заголовок, заголовок не может быть найден:

can't find header

Я дважды проверил каталог pio для проекта, и я определенно вижу файлы заголовка и реализации:

Так что я не знаю почему platform.io не могу найти заголовки.

Я не могу понять, что я делаю не так. есть идеи?

, 👍1

Обсуждение

в вашей библиотеке есть опечатка main.cpp ... хочу изменить направление в каждой второй строке с помощью третьего логического аргумента .... sectionManager.addRangeToSection(0, 0, 3, true); .... логическое значение-4-й аргумент, @jsotola


1 ответ


1

Сегодня утром я проснулся и снова просмотрел документацию.

Часть, которую я неправильно прочитал, была такой:

Мы рекомендуем использовать папку src для исходных файлов C/C++ и папку include для заголовков. Вы также можете иметь вложенные подпапки в src или include.

У меня были заголовки, хранящиеся в папке lib :facepalm:

Я попытался поискать в документах platformio объяснение папок lib vs include vs src (я знал, что видел это в какой-то момент), но не смог его найти.

Затем я вспомнил, что прочитал назначение каждого каталога в файлах Readme в самой структуре проекта, созданной при создании нового проекта platformio:

readmes

Суть в том, что:

  • src: ваши скомпилированные файлы, то есть ваши cpp-файлы
    • Стоит отметить, что вы можете просто засунуть сюда все файлы, и это сработает
  • lib: библиотеки, закрытые для вашего проекта/сама библиотека
  • include: файлы объявлений и определения макросов, то есть ваши заголовочные файлы

Это объясняет, как заголовочные файлы в каталоге lib работали в самом проекте SectionManager, но не работали при использовании SectionManager в качестве установленной библиотеки; каталог lib является только "видимым" локальным для проекта, поэтому, когда я пытался включить заголовочные файлы из другого проекта, они не могли быть найдены.

Поэтому в моем проекте SectionManager я переместил заголовки в каталог include, набрал номер версии и опубликовал:

update to lib directory

Затем я переключился на свой основной проект, в который я втягиваю библиотеку SectionManager, скорректировал версию зависимости, чтобы включить незначительный удар, обновил, и теперь это работает!

works!

Имеет смысл, я просто все еще привыкаю к c++ и platform.io.

,