










Проектная документация
C ++ - это отличный язык для встроенных приложений, а шаблоны являются мощным аспектом. Стандартная библиотека может предложить много хорошо протестированных функций, но есть некоторые части стандартной библиотеки, которые не вписываются в детерминированное поведение и ограниченные требования к ресурсам. Эти ограничения обычно препятствуют использованию динамически выделенной памяти и контейнеров с открытыми размерами.
Что нужно, так это библиотека шаблонов, где пользователь может объявить размер или максимальный размер любого объекта заранее. Большинство встроенных компиляторов в настоящее время не поддерживают стандарт за пределами C ++ 03, поэтому исключая программиста от использования улучшенных функций более поздней библиотеки.
Это то, чего пытается достичь ETL.
ETL не предназначен для полной замены STL, но дополняет его. Его дизайнерская цель охватывает три области.
Встроенная библиотека шаблонов была разработана для приложений с более низким ресурсом. Он содержит набор контейнеров, алгоритмов и коммунальных услуг, некоторые из которых подражают частям STL. Там нет динамического распределения памяти. Библиотека не использует кучу. Все контейнеры имеют фиксированную емкость, позволяющая определить все распределения памяти во время компиляции. Библиотека предназначена для любого компилятора, который поддерживает C ++ 98/03/11/14/17/20.
Любая помощь, переносив библиотеку для работы на разных платформах и компиляторах, будет с благодарностью получена. Я особенно заинтересован в людях, которые используют Keil, IAR, Green Hills, Ti Code Composer и т. Д., Голый металл или RTOS и DSP.
См. (Https://www.etlcpp.com) для актуальной информации.
Вы можете найти шаги настройки здесь.
Один из способов использования этой библиотеки - отбросить ее где -нибудь в каталоге проекта, а затем сделать библиотеку доступной, используя add_subdirectory
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)Если библиотека ETL используется в качестве подмодуля GIT, она может потребовать дополнительной конфигурации для правильного разрешения версии ETL, позволяя искать папку GIT за пределами корневого каталога библиотеки.
set (GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
add_subdirectory (etl) Если вы хотите установить эту библиотеку с Cmake, вы можете выполнить следующие шаги. На Linux суперпользовательские права могут потребоваться для установки библиотеки, поэтому может быть необходимо добавить sudo перед последней командой:
git clone https://github.com/ETLCPP/etl.git
cd etl
git checkout < targetVersion >
cmake -B build .
cmake --install build/ После установки библиотеки вы можете использовать find_package для использования библиотеки. Замените <majorVersionRequirement> на желаемую основную версию:
find_package (etl <majorVersionRequirement>)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl) В качестве альтернативы вы можете использовать FetchContent, заменив <targetVersion> на версию для установки на основе тега GIT:
Include(FetchContent)
FetchContent_Declare(
etl
GIT_REPOSITORY https://github.com/ETLCPP/etl
GIT_TAG < targetVersion >
)
FetchContent_MakeAvailable(etl)
add_executable(foo main.cpp)
target_link_libraries(foo PRIVATE etl::etl) Содержание этого репо доступно как библиотека в Arduino IDE (поиск «библиотеки встроенных шаблонов» в менеджере библиотеки IDE). Репозиторий библиотеки Arduino доступен по адресу https://github.com/ETLCPP/etl-arduino , см. Там для получения более подробной информации.