In the first of a series of posts related to the tools we use daily at Anticto, we talk about FastBuild: it’s fast, and it builds.
FastBuild (mainly by Franta Fulin) is a great build system that we use to build our tools and in-house technology. Our use case involves supporting C++ in 8 different platforms, and several compiler toolchains and standard libraries to produce final programs and also static libraries that we then reuse in other build environments.
In the past I have worked with several build systems, including make, cmake, autotools, scons and waf, in addition to the integrated tools in commercial IDEs, and they all have their own strengths and weaknesses.
Our priorities are:
- Free software, as in “libre”.
- Full control: no blackbox/black-magic under-the-hood processing that we cannot understand or modify if needed.
- It has to be reliable: nothing is worse that finding a bug that is actually caused by issues in the build tool using outdated objects by mistake.
- It has to be fast in a single workstation.
- It has to support distributed builds in case we need them. (We don’t, yet).
- It has to be multiplatform.
- It has to be self-contained: no system-wide installations please. And if it is small, and without dependencies like python, then much better.
- It has to be actively developed, and documented.
FastBuild does all of that. The only small drawback is that, well, you have to learn it, but this applies to all build systems. In the past i had a pet project (that didn’t go anywhere) of a C++ based build system where the build files where written in C++ with a thin API. It only required a C++ compiler to work. It was a little bit convoluted, and not very fast, since it required to generate a dynamic library everytime you changed the build files.
Fastbuild is low-level enough to let you precisely control all the build steps, and toolchain options. It is extremely fast, and it is getting better every day. In the past we used waf which is also great, but it required a full python installation, and modifying it (which we required sometimes) was outside our zone of confort. Fastbuild is lower level, so it fits our needs better.
We are very happy with FastBuild, so if your requirements more or less match ours, give it a go!