










项目文档
C ++是一种很好的语言,用于嵌入式应用程序,模板是一个有力的方面。标准库可以提供大量经过良好测试的功能,但是标准库的某些部分与确定性行为和有限的资源要求不太吻合。这些限制通常排除使用动态分配的内存和具有开放尺寸的容器。
需要的是一个模板库,用户可以在其中声明任何对象的大小或最大大小。大多数嵌入式编译器当前不支持C ++ 03以外的标准,因此不包括程序员使用后来库的增强功能。
这就是ETL试图实现的目标。
ETL的设计并非完全替换STL,而是为其进行补充。它的设计目标涵盖了三个领域。
嵌入式模板库是为较低资源嵌入式应用程序设计的。它包含一组容器,算法和实用程序,其中一些模拟了STL的一部分。没有动态内存分配。图书馆不使用堆。所有容器均具有固定容量,允许在编译时确定所有内存分配。该库均适用于支持C ++ 98/03/11/14/17/20的任何编译器。
感谢将图书馆放置在不同平台和编译器下工作的任何帮助。我对使用Keil,IAR,Green Hills,Ti Code Composer等,Bare Metal或RTO和DSP的人特别感兴趣。
有关最新信息,请参见(https://www.etlcpp.com)。
您可以在此处找到设置步骤。
使用此库的一种方法是将其放在项目目录中的某个位置,然后通过使用add_subdirectory提供库
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)如果将ETL库用作GIT子模块,则可以通过允许在库根目录外面查找GIT文件夹来进行适当的ETL版本分辨率。
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,用基于git标签安装的版本代替<targetVersion> :
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上获得,有关更多详细信息,请参见那里。