PROGEN(1)

NAME
progen - generate and manage project files for embedded development tools

SYNOPSIS

progen [GLOBAL_ARGUMENT] COMMAND [ARGUMENTS]

DESCRIPTION
progen allows you to define an embedded project in text (YAML) files and generate IDE-specific project files based on the rules defined in these records.

GLOBAL ARGUMENTS
progen supports the following global arguments for all commands listed below:

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

COMMANDS

  init

        progen init -p PROJECT -tar TARGET_NAME [-dir SCAN_DIR] -o OUTPUT_DIR [-v | -q]

Add progen support to a project

If you want progen support for a project, this is the command to use. It scans the repository for files and creates 2 YAML files:

1)  the main project file (projects.yaml), and

2)  a project YAML file

In the project YAML file, there are all sources/includes and other project-related settings which progen finds in the repository. This creates a valid progen project file if a folder contains one valid project. In the case there are many, this command can serve at least as guidance - edit and move the YAML file accordingly to a folder structure to split projects.

Arguments

-p  project name

-tar
    target name for the project

-dir
    directory to scan (default: none; scan all in directory progen was executed in)

-o  directory for generated files

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

  generate

        progen generate -f FILE [-p PROJECT] [-t TOOL] [-b] [-c] [-o OPTIONS] [-j JOBS] [-v | -q]

Export defined projects

Arguments

-f FILE
    path to projects.yaml file

-p PROJECT
    name of the project to generate. If not specified, all projects within projects in projects.yaml are exported

-t TOOL
    tool name (uvision, iar, etc). If not specified, tools are checked in records (tool_supported).

-b  build the exported project (note: not every tool supports building a project)

-c  copy all files defined for a project to exported directory

-o OPTIONS
    toolchain options

-j  number of concurrent jobs to use for generating projects (default is 1; not supported by all tools)

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

  build

        progen build -f FILE [-p PROJECT] [-t TOOL] [-c] [-k] [-o OPTIONS] [-x] [-j JOBS] [-v | -q]

Export a project, then build it. Note that not all tools support building.

Arguments

-f FILE
    path to projects.yaml file

-p PROJECT
    name of the project to build (if not specified, all projects within projects in projects.yaml are built)

-t TOOL
    build project files for specified tool

-c  copy sources (as it exports first, this is used for exporting prior to building)

-k  clean project before building

-o OPTIONS
    toolchain options

-x  stop on first failure

-j  number of concurrent build jobs (default is 1; not supported by all tools)

project
    specify projects to be generated and built

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

  list

        progen list targets [-v | -q]

        progen list tools [-v | -q]

        progen list -f FILE projects [-v | -q]

List targets, tools or projects

Arguments

targets
    list all supported targets

tools
    list all supported tools

projects
    list all projects the repository supports (requires -f argument specified)

-f FILE
    path to projects.yaml

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

  clean

        progen clean -f FILE -p PROJECT [-t TOOL] [-v | -q]

Remove progen files/folders

This command removes progen-related files/folders. If progen generates data to various folders (for example, a per-project directory somewhere), this command will remove those folders.

Arguments

-f FILE
    path to projects.yaml file

-p PROJECT
    the project name which should be cleaned (removed)

-t TOOL
    the tool name (if not specified, tools are taken from tools_supported)

project
    specify projects to be cleaned (removed)

-v  increase verbosity of output (repeat for even more verbose output)

-q  decrease verbosity of output (repeat for even less verbose output)

TOOLS
progen supports generating projects for the following tools:

•   uVision4 and uVision5

•   IAR

•   Makefile (GCC ARM)

•   Makefile (ARMCC)

•   Cmake (GCC ARM)

•   CoIDE (GCC ARM)

•   Eclipse (Makefile with GCC ARM)

•   Sublime (Makefile with GCC ARM)

•   Visual studio (Makefile with GCC ARM)

EXAMPLES
To generate a uvision project file for the k20d50m_blinky target:

        progen generate -f projects.yaml -p k20d50m_blinky -t uvision

COPYRIGHT
Copyright 2014-15 Martin Kojtal

AUTHOR
This manual page is based on the progen documentation. It was created by Nick Morrott nickm@debian.org for the Debian GNU/Linux system, but may be used by others.

SEE ALSO
valinor(1), progendef(1)

Getting Started Guide: https://github.com/project-generator/project_generator/wiki/Getting_started

Project Generator examples: https://github.com/project-generator/project_generator_mbed_examples