










項目文檔
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上獲得,有關更多詳細信息,請參見那裡。