










Documentation du projet
C ++ est une excellente langue à utiliser pour les applications intégrées et les modèles sont un aspect puissant. La bibliothèque standard peut offrir beaucoup de fonctionnalités bien testées, mais il existe certaines parties de la bibliothèque standard qui ne correspondent pas bien aux comportements déterministes et aux exigences de ressources limitées. Ces limitations empêchent généralement l'utilisation de la mémoire et des conteneurs alloués dynamiquement avec des tailles ouvertes.
Ce qui est nécessaire, c'est une bibliothèque de modèles où l'utilisateur peut déclarer la taille ou la taille maximale de tout objet à l'avance. La plupart des compilateurs intégrés ne prennent pas actuellement en charge la norme au-delà de C ++ 03, excluant ainsi le programmeur d'utilisation des fonctionnalités améliorées de la bibliothèque ultérieure.
C'est ce que l'ETL tente de réaliser.
L'ETL n'est pas conçu pour remplacer complètement le STL, mais le compléte. Son objectif de conception couvre trois domaines.
La bibliothèque de modèles embarquée a été conçue pour des applications intégrées de ressources inférieures. Il contient un ensemble de conteneurs, d'algorithmes et de services publics, dont certains imitent des parties de la STL. Il n'y a pas d'allocation de mémoire dynamique. La bibliothèque ne fait aucun usage du tas. Tous les conteneurs ont une capacité fixe permettant de déterminer toute allocation de mémoire au moment de la compilation. La bibliothèque est destinée à tout compilateur qui prend en charge C ++ 98/03/11/14/17/20.
Toute aide portant la bibliothèque à travailler sous différentes plates-formes et compilateurs serait reçue avec gratitude. Je suis particulièrement intéressé par les personnes qui utilisent Keil, Iar, Green Hills, Ti Code Composer, etc., Bare Metal ou RTOS et DSPS.
Voir (https://www.etlcpp.com) pour des informations à jour.
Vous pouvez trouver les étapes de configuration ici.
Une façon d'utiliser cette bibliothèque est de la déposer quelque part dans votre répertoire de projet, puis de rendre la bibliothèque disponible en utilisant add_subdirectory
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)Si la bibliothèque ETL est utilisée comme sous-module GIT, elle peut nécessiter une configuration supplémentaire pour une résolution de version ETL appropriée en permettant à la recherche de dossier GIT en dehors du répertoire racine de la bibliothèque.
set (GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
add_subdirectory (etl) Si vous souhaitez installer cette bibliothèque avec CMake, vous pouvez effectuer les étapes suivantes. Sur Linux, les droits des super utilisateurs peuvent être nécessaires pour installer la bibliothèque, il peut donc être nécessaire d'ajouter sudo avant la dernière commande:
git clone https://github.com/ETLCPP/etl.git
cd etl
git checkout < targetVersion >
cmake -B build .
cmake --install build/ Une fois la bibliothèque installée, vous pouvez utiliser find_package pour utiliser la bibliothèque. Remplacez <majorVersionRequirement> par la version majeure souhaitée:
find_package (etl <majorVersionRequirement>)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl) Alternativement, vous pouvez utiliser FetchContent, en remplaçant <targetVersion> par la version à installer en fonction d'une balise 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) Le contenu de ce dépôt est disponible en bibliothèque dans le Arduino IDE (recherchez la "bibliothèque de modèles intégrée" dans le gestionnaire de bibliothèque IDE). Le référentiel de la bibliothèque Arduino est disponible sur https://github.com/ETLCPP/etl-arduino , voir là-bas pour plus de détails.