










Documentación del proyecto
C ++ es un gran idioma para usar para aplicaciones y plantillas integradas son un aspecto poderoso. La biblioteca estándar puede ofrecer una gran cantidad de funcionalidad bien probada, pero hay algunas partes de la biblioteca estándar que no encajan bien con el comportamiento determinista y los requisitos de recursos limitados. Estas limitaciones generalmente impiden el uso de memoria y contenedores asignados dinámicamente con tamaños finales.
Lo que se necesita es una biblioteca de plantillas donde el usuario puede declarar el tamaño o el tamaño máximo de cualquier objeto por adelantado. La mayoría de los compiladores integrados actualmente no admiten el estándar más allá de C ++ 03, por lo tanto, excluyendo que el programador utilice las características mejoradas de la biblioteca posterior.
Esto es lo que el ETL intenta lograr.
El ETL no está diseñado para reemplazar completamente el STL, sino complementarlo. Su objetivo de diseño cubre tres áreas.
La biblioteca de plantillas integradas ha sido diseñada para aplicaciones integradas de recursos más bajos. Contiene un conjunto de contenedores, algoritmos y utilidades, algunos de los cuales emulan partes del STL. No hay asignación de memoria dinámica. La biblioteca no hace uso del montón. Todos los contenedores tienen una capacidad fija que permite determinar toda la asignación de memoria en el momento de la compilación. La biblioteca está destinada a cualquier compilador que admita C ++ 98/03/11/14/17/20.
Cualquier ayuda para portar la biblioteca para trabajar en diferentes plataformas y compiladores se recibiría con agradecimiento. Estoy especialmente interesado en las personas que usan Keil, IAR, Green Hills, TI Code Composer, etc., metal desnudo o RTO y DSP.
Consulte (https://www.etlcpp.com) para obtener información actualizada.
Puede encontrar los pasos de configuración aquí.
Una forma de usar esta biblioteca es dejarla en algún lugar de su directorio de proyecto y luego hacer que la biblioteca esté disponible utilizando add_subdirectory
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)Si la biblioteca ETL se usa como un submódulo Git, puede requerir una configuración adicional para la resolución de versión ETL adecuada al permitir la búsqueda de la carpeta Git fuera del directorio de la raíz de la biblioteca.
set (GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
add_subdirectory (etl) Si desea instalar esta biblioteca con CMake, puede realizar los siguientes pasos. En Linux, se pueden requerir los derechos de súper usuario para instalar la biblioteca, por lo que podría ser necesario agregar sudo antes del último comando:
git clone https://github.com/ETLCPP/etl.git
cd etl
git checkout < targetVersion >
cmake -B build .
cmake --install build/ Después de instalar la biblioteca, puede usar Find_package para usar la biblioteca. Reemplace <majorVersionRequirement> con la versión principal deseada:
find_package (etl <majorVersionRequirement>)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl) Alternativamente, puede usar FetchContent, reemplazando <targetVersion> con la versión para instalar en función de una etiqueta 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) El contenido de este repositorio está disponible como biblioteca en Arduino IDE (busque la "Biblioteca de plantillas integradas" en el IDE Biblioteca Manager). El repositorio de la biblioteca Arduino está disponible en https://github.com/ETLCPP/etl-arduino , vea allí para obtener más detalles.