A C++ template library for embedded applications
Designed and maintained by
Aster Consulting Ltd


This page describes the steps needed to integrate the ETL with your project.

The ETL requires no special installation. Just copy or clone the GitHub project into an appropriate directory.

User defined files

The user must create a file named etl_profile.h which then includes a compiler profile header.
The file should also define any ETL configuration macros. See here for further information.
This header is included from ETL's platform.h

An example would be:-

#ifndef __ETL_PROFILE_H__
#define __ETL_PROFILE_H__


#ifdef _MSC_VER
  #include "profiles/msvc.h"
  #include "profiles/gcc.h"

There are several profiles available in the ETL's src/profiles/ directory. They may either be used 'as is' or as a base
for a project specific variant.

The profiles currently available are:
Arduino_arm.h      Arduino ARM targets. No OS.
armv5.h            ARM compiler version 5.x. No OS.
armv6.h            ARM compiler version 6.x. No OS.
cpp03.h            Generic C++03. Generic target. No OS.
cpp11.h            Generic C++11. Generic target. No OS.
cpp14.h            Generic C++14. Generic target. No OS.
gcc_generic.h      GCC generic settings. Generic target. No OS.
gcc_linux_x86.h    GCC for Linux on X86 target
gcc_windows_x86.h  GCC for Windows on X86 target
msvc_x86.h         Microsoft Visual Studio  for Windows on X86 target
ticc.h             Texas Instruments Code Composer. Generic target. No OS.

Additional include directories

The compiler will normally expect paths to additional include directories to be specified
A path to the ETL's src directory must either be defined or full paths to the ETL includes must be used.

A path to the user generated etl_profile.h must be defined.


The Arduino programming platform is not supplied with an implementation of the STL. The ETL requires some parts of
the STL to compile and therefore one must be acquired. A suitable implementation may be downloaded from the
Arduino library resource; It is called ArduinoSTL.
Add #include <ArduinoSTL.h> to the start of every file that uses the ETL.
Remember to add the directory to the include path.