










Projektdokumentation
C ++ ist eine großartige Sprache für eingebettete Anwendungen, und Vorlagen sind ein leistungsstarker Aspekt. Die Standardbibliothek kann eine Menge gut getesteter Funktionen bieten, aber es gibt einige Teile der Standardbibliothek, die nicht gut in das deterministische Verhalten und die begrenzten Ressourcenanforderungen passen. Diese Einschränkungen schließen normalerweise die Verwendung von dynamisch zugewiesenen Speicher und Containern mit offenen Endgrößen aus.
Was benötigt wird, ist eine Vorlagenbibliothek, in der der Benutzer die Größe oder die maximale Größe eines Objekts im Voraus deklarieren kann. Die meisten eingebetteten Compiler unterstützen derzeit den Standard über C ++ 03 hinaus nicht, weshalb der Programmierer die erweiterten Funktionen der späteren Bibliothek verwendet.
Dies ist das, was die ETL zu erreichen versucht.
Die ETL ist nicht so ausgelegt, dass sie die STL vollständig ersetzen, sondern sie ergänzen. Das Designziel deckt drei Bereiche ab.
Die eingebettete Vorlagenbibliothek wurde für eingebettete Anwendungen mit niedrigeren Ressourcen entwickelt. Es enthält eine Reihe von Behältern, Algorithmen und Versorgungsunternehmen, von denen einige Teile der STL nachahmen. Es gibt keine dynamische Speicherzuweisung. Die Bibliothek nutzt den Haufen nicht. Alle Container verfügen über eine feste Kapazität, sodass alle Speicherzuweisungen zum Kompilierungszeit ermittelt werden können. Die Bibliothek ist für jeden Compiler vorgesehen, der C ++ 98/03/11/12/17/20 unterstützt.
Jede Hilfe bei der Portion der Bibliothek, die unter verschiedenen Plattformen und Compilern arbeitet, wird dankbar erhalten. Ich interessiere mich besonders für Leute, die Keil, IAR, Green Hills, Ti Code Composer usw., Bare Metal oder RTOs und DSPs verwenden.
Weitere Informationen finden Sie unter (https://www.etlcpp.com).
Die Setup -Schritte finden Sie hier.
Eine Möglichkeit, diese Bibliothek zu nutzen, besteht darin, sie irgendwo in Ihrem Projektverzeichnis fallen add_subdirectory
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)Wenn die ETL -Bibliothek als GIT -Submodul verwendet wird, kann möglicherweise eine zusätzliche Konfiguration für die ordnungsgemäße ETL -Versionsauflösung erforderlich sind, indem der suchen nach dem Git -Ordner außerhalb des Bibliotheks -Root -Verzeichnisses.
set (GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
add_subdirectory (etl) Wenn Sie diese Bibliothek mit CMAKE installieren möchten, können Sie die folgenden Schritte ausführen. Unter Linux müssen möglicherweise Super -Benutzerrechte für die Installation der Bibliothek erforderlich sein. Es ist möglicherweise erforderlich, sudo vor dem letzten Befehl hinzuzufügen:
git clone https://github.com/ETLCPP/etl.git
cd etl
git checkout < targetVersion >
cmake -B build .
cmake --install build/ Nach der Installation der Bibliothek können Sie Find_Package verwenden, um die Bibliothek zu verwenden. Ersetzen Sie <majorVersionRequirement> durch Ihre gewünschte Hauptversion:
find_package (etl <majorVersionRequirement>)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl) Alternativ können Sie FetchContent verwenden, um <targetVersion> durch die Version zu ersetzen, die auf einem Git -Tag installiert werden soll:
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) Der Inhalt dieses Repo ist als Bibliothek in der Arduino -IDE verfügbar (Suche nach der "eingebetteten Vorlagenbibliothek" im IDE -Bibliotheksmanager). Das Arduino-Bibliotheksrepository ist unter https://github.com/ETLCPP/etl-arduino verfügbar. Weitere Informationen finden Sie unter dort.