Chapter 9: Creating Reproducible Build Environments
Building software can be complex, especially when dependencies or special tools are involved. What compiles on one machine might not work on another because a crucial piece of software is missing. Relying on the correctness of the documentation of a software project to figure out all the build requirements is often not enough, and as a consequence, programmers spend a significant amount of time combing through various error messages to figure out why a build fails.
There are countless stories out there of people avoiding upgrading anything in a build or continuous integration (CI) environment because they fear that every change might break the ability to build the software. This goes as far as companies refusing to upgrade the compiler toolchains they are using for fear of no longer being able to ship products. Creating robust and portable information about build environments is an absolute game-changer. With presets, CMake provides...