Skip to main content

15 docs tagged with "build"

View all tags

Boost.Build (b2)

Boost.Build is Boost's own build system — the toolchain Boost uses to compile itself. Its driver

Build Systems and Vendor Tooling

Choosing a build system for firmware feels like a taste question and is not. The real question underneath it is who owns the generated code, and it has consequences that outlive the project: whether a colleague can build your firmware without installing an IDE, whether CI can build it at all, and whether the day you need to change a pin assignment costs ten minutes or a merge conflict across forty files you did not write.

C++ Compilation Pipeline

The C++ compilation process transforms source code into executable binary through four main stages: preprocessing, compilation, assembly, and linking.

Choosing a Toolchain

For a hobby project the toolchain question is nearly free: install Arm GNU, move on. For a product it is one of the longest-lived decisions in the codebase. A toolchain choice outlives the engineers who made it, because the compiler is baked into every build artefact you have ever released and into every certification argument you have ever made. Changing it later is not a flag change; it is a re-qualification.

CMake for Embedded

CMake's defaults encode one assumption so deeply that it is easy to miss: the machine running the build can also run what the build produces. That is what lets CMake test a compiler by compiling and linking a tiny program, what lets findpackage look in /usr/lib, and what lets checkcsourceruns exist at all. Every one of those assumptions is false for a Cortex-M4 with 128 KB of RAM and no operating system.

Compile-time log level

A runtime level check is cheap, but it isn't free — it's still a branch and, on the disabled path,

Cross-Compilation

Cross-compilation builds executables for a different platform (target) than the one running the compiler (host). Essential for embedded systems, mobile development, and deploying to different architectures.

Installing Boost

There is no single "install Boost" button, and that is mostly fine: because the majority of Boost is

Makefiles

Makefiles define rules for building projects using the Make build system. They specify dependencies and commands to compile source code incrementally.

Modules (C++20)

Modules are C++20's replacement for the textual #include model. Instead of the preprocessor