Skip to content

Templates

Martin Kojtal edited this page Dec 3, 2019 · 11 revisions

Project templates are located in the templates directory. Each tool has own template. The data are injected via python module jinja2 or just raw data, this depends on the tool. The recommended approach is to use what tool provides. For example for uvision is to use xml format and then just write all data via dic to xml. Because tool like this has so many options, writing jinja2 with all those thousands options is time-consuming, hard to maintain (what if they add new option). Using the format tool defines, we just add progen data. Please look at them, they are fairly simple for some tools, or more advanced for some.

You can use already created project with some tools. For example, if there is working IAR project, use ewp file as a template for the project, this file will be used to obtain all settings. Progen injects its data (sources, includes, macros) to parsed project file and exports it.

The template file can be per project or per repository. Refer to records section for more info.

The quickest way to start is to use a valid project file, and insert jinja2. It can always be later switched to completely generated from python to any format.

### uVision template file

uVision tool provides default template dictionary which is used in case a user does not provide own project. The optional template file is .uvproj/.uvprojx file.

Default templates for uVision: uvision.uvmpw, uvision.uvoptx and uvision.uvproj

### IAR template file

IAR tool provides default template dictionary which is used in case a user does not provide own project. The optional template file for a project is .ewp file.

Default templates for IAR: iar.ewd, iar.ewp and iar.eww.

### Makefile template file

Makefile template file is generic. It should provide all options for building a project. There are non-generic, specific for each tool, like GCC ARM or ARMCC.

Default template: makefile.tmpl

### CoIDE template file

CoIDE tool provides default template dictionary which is used in case a user does not provide own project. The optional template file for a project is .coproj file.

Progen uses jinja2 in this case as we were having difficulties to export valid project via xml.

Default template: coide.coproj.tmpl

### Eclipse Makefile GNU ARM template file

User's template not supported.

Eclipse uses jinja2 predefined template file, which is used for exporting.

Default template: eclipse.project.tmpl, eclipse_makefile.cproject.tmpl

### Sublime Text

User's template not supported.

Sublime text uses jinja2 predefined template file, which is used for exporting.

Default template: None

### CMake template file

We currently provide only CMake for GCC ARM.

Default template: cmakelistgccarm.tmpl

### Visual studio template file

Visual studio template file is a jinja2 template. We generate 2 smaller files from python to xml, but the main project files are in jinja2.

Default template: visual_studio.vcxproj.filters.tmpl, visual_studio.vcxproj.tmpl