Difference between revisions of "C++ Support in Embedded Studio"
m (Nino moved page How to use C++ Libraries in Embedded Studio to C++ Support in Embedded Studio) |
(→How to use the C++ Library) |
||
(14 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | __TOC__ |
||
− | This article will show how C++ libraries can be enabled in Embedded Studio so you can use C++ library functions in your application. |
||
+ | Embedded Studio supports application development in C and C++. |
||
− | ==How to== |
||
+ | Its C runtime library, based on emRun, provides all fundamentals, tweaked for fastest speed or smallest size. |
||
− | For this guide Embedded Studio V5.60 or later is required. For older versions see the legacy steps below. |
||
+ | In addition, the C++ library provides all required features for efficient C++ applications. |
||
− | The library is based on the libcxx's embedded subset. |
||
+ | The C++ library adds: |
||
− | * Open the package manager under Tools->Package Manager |
||
− | * Select the ARM libcxx Library Package [Common] and select install |
||
− | ** For RISCV the RISCV common package respectively |
||
− | * Press Next, Next to start the installation |
||
− | * Now either create a new project or use your existing one |
||
− | * Open the project options and under Libraries->libcxx Library select Yes |
||
− | * You should now get a prompt that will try to install additional libraries for your particular project setup, here select yes and install the additional package |
||
− | * Now you should be able to include the library headers in your source file e.g. #include <cstring> and use the library functions |
||
+ | * C++ header files to wrap up their C equivalents. e.g. cmath to math.h. |
||
+ | * C++-specific names and functions and mangled names for math.h. e.g. classification (isinf) and comparison (isless) functions, and cosf to cos(float) / cos to cos(double). |
||
+ | * C++ header files for exception, new, typeinfo. |
||
+ | * C++ unwinding library. Functions used for target unwinding, such as to implement exceptions. |
||
+ | * The C++ ABI library. Low-level support for standard C++ libraries. |
||
+ | * The C++ standard library. |
||
+ | This article describes how to enable the C++ libraries in Embedded Studio to use C++ library functions in target applications. |
||
− | ==Legacy STLport== |
||
+ | |||
− | For older Embedded Studio versions the libcxx library is not available. Instead use the STLport from the package manager and project options. |
||
+ | == How to use the C++ Library == |
||
− | The installation steps are the same as above. |
||
+ | ''Note: For libcxx, Embedded Studio V5.60 or later is required.'' |
||
+ | |||
+ | === Library installation steps (only necessary until ES V7.20) === |
||
+ | The C++ standard library is based on the embedded C++ subset of the [https://libcxx.llvm.org "libc++" C++ Standard Library.] |
||
+ | |||
+ | To limit download and installation size of Embedded Studio, the library is supplied as additional packages for the supported target architectures. |
||
+ | To enable the library in a project, only the common package needs to be installed. |
||
+ | Embedded Studio takes care of downloading the specific packages if required. |
||
+ | |||
+ | * Open the package manager under Tools -> Package Manager... |
||
+ | ** Make sure that you have the latest package list loaded to avoid download errors. To refresh the list manually you will find a refresh button in the top right corner of the package manager. The mouse over tool tip shows "Refresh Package List". |
||
+ | * Select the "ARM libcxx Library Package [Common]" or "RISCV libcxx Library Package [Common]" for installation. |
||
+ | [[File:Cpp_Package_Manager.PNG|thumb|Package Manager|none]] |
||
+ | * Optional: Select the specific libcxx Library Packages for your target architecture(s) for installation. |
||
+ | ** 'If not done, Embedded Studio will download the specific package for your project. See next steps.' |
||
+ | * Press Next to continue the download and installation. |
||
+ | |||
+ | The library is now ready to use and can be enabled in new and existing projects. |
||
+ | |||
+ | === Generic project setup steps === |
||
+ | |||
+ | * Open or create a project. |
||
+ | * Option the project options and go to Code -> Libraries. |
||
+ | * In "libcxx Library" select "Yes" or "Yes (No Exceptions)". |
||
+ | ** Optional, if you select Yes and you are using std functions that could throw exceptions make sure that project option "Code > Code Generation > Enable Exception Support" is set to Yes |
||
+ | [[File:Cpp_Project_Option.png|thumb|Project Options|none]] |
||
+ | * Press OK to save the project options. |
||
+ | * If the specific package for your project has not been installed, yet, Embedded Studio prompts to download and install the package now. |
||
+ | ** Press Yes. |
||
+ | ** Press Next to continue the download and installation. |
||
+ | [[File:Cpp_Additional_Pack.png|thumb|Package Prompt|none]] |
||
+ | |||
+ | The project is now configured to use the C++ standard library. |
||
+ | Include the necessary headers and start using the library functions. |
||
+ | |||
+ | == Enabling Exception Support == |
||
+ | |||
+ | To enable exception support in your C++ project the following must be considered: |
||
+ | * Make sure your library is installed as explained above. (Project option libcxx Library = Yes) |
||
+ | * Set project option "Code > Code Generation > Enable Exception Support" to Yes. |
||
+ | * Make sure that sections readonly and readexec are placed in your linker script. |
||
+ | |||
+ | == Changing the C++ standard == |
||
+ | Per default C++ support is set to gnu++98. If you are using more modern features of C++ make sure to change the standard to the respective version in project options under Code->Compiler->C++ Language Standard |
Latest revision as of 10:55, 6 November 2023
Contents
Embedded Studio supports application development in C and C++. Its C runtime library, based on emRun, provides all fundamentals, tweaked for fastest speed or smallest size. In addition, the C++ library provides all required features for efficient C++ applications.
The C++ library adds:
- C++ header files to wrap up their C equivalents. e.g. cmath to math.h.
- C++-specific names and functions and mangled names for math.h. e.g. classification (isinf) and comparison (isless) functions, and cosf to cos(float) / cos to cos(double).
- C++ header files for exception, new, typeinfo.
- C++ unwinding library. Functions used for target unwinding, such as to implement exceptions.
- The C++ ABI library. Low-level support for standard C++ libraries.
- The C++ standard library.
This article describes how to enable the C++ libraries in Embedded Studio to use C++ library functions in target applications.
How to use the C++ Library
Note: For libcxx, Embedded Studio V5.60 or later is required.
Library installation steps (only necessary until ES V7.20)
The C++ standard library is based on the embedded C++ subset of the "libc++" C++ Standard Library.
To limit download and installation size of Embedded Studio, the library is supplied as additional packages for the supported target architectures. To enable the library in a project, only the common package needs to be installed. Embedded Studio takes care of downloading the specific packages if required.
- Open the package manager under Tools -> Package Manager...
- Make sure that you have the latest package list loaded to avoid download errors. To refresh the list manually you will find a refresh button in the top right corner of the package manager. The mouse over tool tip shows "Refresh Package List".
- Select the "ARM libcxx Library Package [Common]" or "RISCV libcxx Library Package [Common]" for installation.
- Optional: Select the specific libcxx Library Packages for your target architecture(s) for installation.
- 'If not done, Embedded Studio will download the specific package for your project. See next steps.'
- Press Next to continue the download and installation.
The library is now ready to use and can be enabled in new and existing projects.
Generic project setup steps
- Open or create a project.
- Option the project options and go to Code -> Libraries.
- In "libcxx Library" select "Yes" or "Yes (No Exceptions)".
- Optional, if you select Yes and you are using std functions that could throw exceptions make sure that project option "Code > Code Generation > Enable Exception Support" is set to Yes
- Press OK to save the project options.
- If the specific package for your project has not been installed, yet, Embedded Studio prompts to download and install the package now.
- Press Yes.
- Press Next to continue the download and installation.
The project is now configured to use the C++ standard library. Include the necessary headers and start using the library functions.
Enabling Exception Support
To enable exception support in your C++ project the following must be considered:
- Make sure your library is installed as explained above. (Project option libcxx Library = Yes)
- Set project option "Code > Code Generation > Enable Exception Support" to Yes.
- Make sure that sections readonly and readexec are placed in your linker script.
Changing the C++ standard
Per default C++ support is set to gnu++98. If you are using more modern features of C++ make sure to change the standard to the respective version in project options under Code->Compiler->C++ Language Standard