Как добавить готовую библиотеку в проект с помощью cmake? - PullRequest
0 голосов
/ 25 марта 2020

Я посмотрел сайт здесь и на inte rnet, и даже на cmake.org - и не нашел этого, но хотел опубликовать его здесь на случай, если он может быть полезным.

Вот пример файла cmakelists.txt:

idf_component_register(SRCS "main.c"
                INCLUDE_DIRS ".")
  • Импортируйте библиотеку, указав имя цели и путь к библиотеке.
  • Частные зависимости библиотеки также указано.

    add_prebuilt_library (предустановленный "libprebuilt.a" PRIV_REQUIRES spi_fla sh app_update log)

  • main вызывает функцию из библиотеки, поэтому свяжите ее на main

    target_link_libraries ($ {COMPONENT_LIB} PRIVATE prebuilt)


Это работает. Разумеется, в PRIV_REQUIRES должны быть указаны все компоненты, которые используются в готовой библиотеке stati c.

. Для более реального примера - посмотрите здесь: https://github.com/espressif/esp-idf/tree/release/v4.0/examples/build_system/cmake/import_prebuilt

Благодарность достается людям на espressif - когда я использовал редактор cmake, даже автозаполнение не нашло add_prebuilt ...

Надеюсь, что некоторые находят это полезным как мне не понадобилось много времени, чтобы упасть в эту кроличью нору синтаксиса cmake.

С уважением, Джон В.

1 Ответ

0 голосов
/ 27 марта 2020

Это спецификация ESP32 c - я ошибаюсь, полагая, что add_prebuilt_library была стандартной функцией cmake, которая мне кажется довольно удобной.

Вот текст из Espressif:

Использование готовых библиотек с компонентами

.. highlight :: cmake

Система сборки ESP-IDF предоставляет пользователям служебную функцию add_prebuilt_library, чтобы пользователи могли легко импортировать и использовать готовые библиотеки ::

add_prebuilt_library (target_name lib_path [ТРЕБУЕТ req1 req2 ...] [PRIV_REQUIRES req1 req2 ...])

где:

  • target_name - имя, которое можно использовать для ссылки на импортируемую библиотеку, например, при ссылке на другие цели
  • lib_path - путь к предварительно собранной библиотеке; может быть абсолютным или относительным путем к каталогу компонента

Необязательные аргументы REQUIRES и PRIV_REQUIRES указывают зависимость от других компонентов. Они имеют то же значение, что и аргументы для idf_component_register.

Обратите внимание, что предварительно скомпилированная библиотека должна быть скомпилирована для той же цели, что и проект-потребитель. Конфигурация, относящаяся к предварительно собранной библиотеке, также должна совпадать. Если не обратить внимание на эти два фактора, это может привести к незначительным ошибкам в приложении.

Например, посмотрите на: пример: build_system/cmake/import_prebuilt.

====

Извините за возникшую путаницу.

Если вы разрабатываете для платформ ESP новые инструменты, это может быть удобно, если вы пропустили это в документации, как я.

С уважением, Джон В.

...