Here’s a quick overview on one of the key aspects of any software project: the build. nanoFramework is no different and we all know how critical this is, so we’ve put a lot of attention and care on this matter.
The goal was to make it highly configurable (because there are a lot of features and components that a developer may want to include or leave out of a particular image) and, of course, being very easy to setup.
The choice was to use CMake a well-known and proven build system (available for Windows, Linux and MAC).
Another reason for it is that are a couple of nice extensions that make it very easy to work with CMake on VS Code. Why is this relevant? Well, because we’ve been using VS Code as the official IDE for developing the native side of nanoFramework.
There is a document in our GitHub repo detailing all this: how to setup it up and how to start the build.
To prove that this is really easy (and that it works!) know that even a machine can do it. Yes, that’s true! 😉
As part of our QA and DevOps each pull request commit and merge commit into the master branch goes through an automated process that builds the image for each of the reference target boards. Only after an “all green” condition the commit is merged or accepted. We are using Travis CI for running these automated builds (a big “thank you” for the folks at Travis CI for providing free accounts for Open Source projects).
To make my point here (about how easy it to setup and run the build) let’s take a brief look on what happens on each of those builds:
- Travis CI spins up a virtual machine with a clean image of Ubuntu
- GNU ARM Embedded Toolchain is installed
- CMake package is installed
- nanoFramework sources are pulled from GitHub
- ChibiOS sources are pulled from GitHub
- A build starts for each of the reference target boards
See? If a machine can do it so can a human. 🙂
So, after this (and if you haven’t done it already) what are waiting? Go and setup your machine to run a nanoFramework build. Next, who knows, you’ll be making your way into the code and submit some pull requests…