arduino-builder

A command line tool for compiling arduino sketches.

TLDR

Compile a sketch

$ arduino-builder -compile [path/to/sketch.ino]
copy


Specify the debug level (1 to 10, defaults to 5)
$ arduino-builder -debug-level [level]
copy


Specify a custom build directory
$ arduino-builder -build-path [path/to/build_directory]
copy


Use a build option file, instead of specifying --hardware, --tools, etc. manually every time
$ arduino-builder -build-options-file [path/to/build.options.json]
copy


Enable verbose mode
$ arduino-builder -verbose [true]
copy

SYNOPSIS

arduino-builder mandatory-arguments [options] sketch

DESCRIPTION

A command line tool for compiling Arduino sketches

This tool is able to parse Arduino Hardware specifications, properly run gcc and produce compiled sketches.

An Arduino sketch differs from a standard C program in that it misses a main (provided by the Arduino core), function prototypes are not mandatory, and libraries inclusion is automagic (you just have to #include them). This tool generates function prototypes and gathers library paths, providing gcc with all the needed -I params.

OPTIONS

Every time you run this tool, it will create a 'build.options.json' file in build path. It's used to understand if build options (such as hardware folders, fqbn and so on) were changed when compiling the same sketch. If they changed, the whole build path is wiped out. If they didn't change, previous compiled files will be reused if the corresponding source files didn't change as well. You can save this file locally and use it instead of specifying -hardware, -tools, -libraries, -fqbn, -pref and -ide-version.

Mandatory

-hardware folder

folder containing Arduino platforms. An example is the 'hardware' folder shipped with the Arduino IDE, or the packages folder created by Arduino Boards Manager. Can be specified multiple times. If conflicting hardware definitions are specified, the last one wins.

-tools folder

folder containing Arduino tools (gcc, avrdude...). An example is the 'hardware/tools' folder shipped with the Arduino IDE, or the packages folder created by Arduino Boards Manager. Can be specified multiple times.

-fqbn name

Fully Qualified Board Name, e.g.: arduino:avr:uno.

Optional

-compile | -dump-prefs | -preprocess

If omitted, defaults to -compile. dump-prefs will just print all build preferences used, -compile will use those preferences to run the actual compiler, -preprocess will only print preprocessed code to stdout.

-libraries folder

folder containing Arduino libraries. An example is the 'libraries' folder shipped with the Arduino IDE. Can be specified multiple times.

-build-path folder

folder where to save compiled files. If omitted, a folder will be created in the temporary folder specified by your OS.

-prefs=key=value

It allows you to override some build properties.

-warnings

Can be "none", "default", "more" and "all". Defaults to "none". Used to tell gcc which warning level to use (-W flag).

-verbose

Turns on verbose mode.

-quiet

Suppresses almost every output.

-debug-level

Ddefaults to "5". Used for debugging. Set it to 10 when submitting an issue.

-core-api-version

Defaults to "10600". The version of the Arduino IDE which is using this tool.

-logger

Can be "human", "humantags" or "machine". Defaults to "human". If "humantags" the messages are qualified with a prefix that indicates their level (info, debug, error). If "machine", messages emitted will be in a format which the Arduino IDE understands and that it uses for I18N.

-version

If specified, prints version and exits.

-build-options-file path

path to a local build.options.json file, which allows you to omit specifying params such as -hardware, -tools, -libraries, -fqbn, -pref and -ide-version.

-vid-pid

When specified, VID/PID specific build properties are used, if boards supports them.

SEE ALSO

arduino(1)

Copied to clipboard