SEGGER Embedded Studio is a streamlined and powerful C/C++ IDE (Integrated Development Environment) for ARM microcontrollers. It is specifically designed to provide you with everything needed for professional embedded development: an all-in-one solution aiming at stability and a continuous workflow.
The SEGGER Embedded Workbench Project Management is based on Solutions.
A Solution can contain one or more projects, which allows managing and organizing all projects in one place. All projects in a solution can be built and loaded onto the target at once.
A project contains and organizes everything which is needed to create one application or library. Projects can be dependent on each other to, for example, build your library project and directly include the library into your application project.
The Solution is basically one single file with the file extension .emProject. It contains all projects and their settings. Projects are referenced relatively to the solution directory. A project can reside in the solution directory or its own one. See the following examples for single-project and multi-project Solution organization:
Single-Project Solution
SEGGER Embedded Studio Projects |
Multi-Project Solution
SEGGER Embedded Studio Projects |
The Project Explorer |
||
---|---|---|
|
To create a new project select File → Create New Project... (Shift-Ctrl+N).
Select "Create the project in a new solution" to close the current Solution and create a new Solution for this project. Select "Add the project to the current solution" to create the project in the current Solution for multi-project builds.
Select the project type from your target Support Package. Depending on the package, the following project types can be available:
C/C++ executable / Assembly code only executable: Create an application which can be loaded and executed.
Library: Create an object code library (an archive) which can be linked into an executable.
Externally built executable: Include an application which was not built with SEGGER Embedded Studio to load and execute it on your target.
Enter a Name for your project and a location for the solution and click Next.
Depending on the project type you can now optionally select some common properties. Click Next to go through the settings pages and click Finish when you are done.
You can determine the relationship between projects in a Solution. Projects can depend on other projects to define an order in which they are built and make sure all dependent projects are up-to-date when building. This is for example used to make an executable dependent on a library. When the executable is built, the build system will make sure the library is up-to-date.
To set project dependencies activate the project and select Project → Dependencies... Select the dependencies by double-click on the projects and order them if necessary. Click OK. Cycle-dependencies are not possible (when Project A depends on Project B, Project B cannot depend on Project A).
Projects can include a folder structure to allow organizing and managing multiple files at once.
To add a folder right-click on the project or a folder in the project and select New Folder.... Enter a folder name. Optionally make the folder a dynamic shortcut to a folder on your disc: Select a source folder to link to, include or exclude files by name or wildcard expression (*.c,*.cpp to include/exclude only source files). Click OK.
To add existing files to your project right-click on the folder you want to add the files to and select Add existing File.... In the file dialog, select one or more files you want to add to this project folder. Click OK.
To add a new file to your project right-click on the folder you want to add the files to and select Add new File.... Select a template to generate the file from, enter a name for the file and a location to save it to. Click OK. The file is now part of your project.
Build configurations can be used to build one project with different properties and settings, for example different output directories, compiler options or preprocessor defines, but also different, configuration dependent files. The most common use is to create a debug configuration which configures the project properties to allow easy debugging and produce more compiler warnings, and a release configuration which enables optimizations to reduce the size and increase the speed of the application.
The currently active configuration is shown in the project explorer's toolbar and can be selected from there. It is also available via Build → Set Active Build Configuration (Ctrl+Shift+B).
In the properties window you can also select from the combobox to which configuration you want to apply properties to without changing the active configuration.
To create a new build configuration open Build → Build Configurations... and click on the '+' symbol. Enter a name for the configuration and press Enter.
With SEGGER Embedded Studio you can set properties for solutions, projects, folders and files to configure the build system and debugging behavior. Property values can be set in the properties window, which is accessible as a docked window via View → Properties Window, which shows the property values for the currently selected file in the project explorer or via right-click on a project, folder or file in the project explorer to show the property values of this element.
Properties can be set for all build configurations with the private configuration "Common" and separately for each build configuration.
The properties are grouped by their specific purpose. The properties window allows searching for specific properties. Not all properties might be available for all kind of elements and project types.
Properties are inherited from parent elements. A project inherits from the Solution, a folder from the project, a sub-folder from its parent folder and files from folders.
Unique properties have one value. For each element the inherited unique property values can be overridden by changing it for this element.
MySolution Exclude: No - Will be built
MyProject Exclude: No - Will be built
MyFolder Exclude: Yes - Will not be built
MyFile.c Exclude: -- - Will not be built
MyFile1.c Exclude: No - Will be built
MyFolder1 Exclude: -- - Will be built
MyFile.h Exclude: -- - Will be built
MyFile1.h Exclude: Yes - Will not be built
Aggregating properties are values which are collected from the hierarchy. For each element aggregating values can be extended.
Example for preprocessor definitions:
MySolution Property Value: SolDefine Resulting Definition: SolDefine
MyProject Property Value: PrjDefine Resulting Definition: SolDefine PrjDefine
MyFolder Property Value: FolderDefine Resulting Definition: SolDefine PrjDefine FolderDefine
MyFile.c Property Value: FileDefine Resulting Definition: SolDefine PrjDefine FolderDefine FileDefine
MyFolder1 Property Value: <none> Resulting Definition: SolDefine PrjDefine
MyFile1.h Property Value: File1Define Resulting Definition: SolDefine PrjDefine File1Define