Better CMake: A World Tour of Build Systems - Better C++ Builds - Damien Buhl & Antonio Di Stefano
CppCon CppCon
147K subscribers
9,291 views
0

 Published On Apr 1, 2024

https://cppcon.org/
---

Better CMake: A World Tour of Build Systems - Better C++ Builds - Damien Buhl and Antonio Di Stefano - CppCon 2023
https://github.com/CppCon/CppCon2023

Recently the C++ community is all about safety and new “successors” programming languages are popping up like Cpp2, Carbon, Val and others to complement C++ towards software security and memory safety.

While it’s very beneficial to design new languages features to support safety, it is equally important to have proper tooling. One key aspect of a programming language’s usability and safety is how the code written can be shipped to end-users and how the software supply chain security can be guaranteed.

Happily the C++ community has been unifying in the last decade from various build systems on CMake. Despite it’s massive adoption it is still criticized for reasons ranging from it’s turing-completeness to the fragmentation of the different CMake styles across codebases. It also lacks important features than newer build systems provide: dependency management, SBOM (Software Bill Of Material) generation, reproducible, hermetic and remote builds.

Newer potential “successors” build systems for C++ (e.g. bpt, GN, Meson, BuildCC) but also polyglot build systems like Bazel and Gradle have been designed to overcome these issues. In this talk we will analyze which choices were made and which benefits they offer. Finally looking at how software supply chain security, static+dynamic code analysis, reproducible, hermetic and remote builds are achieved in their ecosystem.

After looking at an overview of the design decisions and benefits that these “successors” build systems provides, we will identify best practices and provide pragmatic solutions to get all of this today with CMake.

To prove our point we will finally demo SBOM generation, build reproducibility to the single byte and remote builds on a large CMake codebase.
---

Antonio Di Stefano

Antonio (@TheGrizzlyDev) is a DevEx engineer at EngFlow, his main focus is elevating the happiness and productivity of software engineers. Open Source contributor to Natalie, a fast Ruby to C++ transpiler, he spends his spare time on Snazel : the only way to get Snake and Doom run on Build Systems DSL.

Damien Buhl

Damien (alias daminetreg) co-founder and CEO tipi.build is an enthusiast C++ developer. Opensource entrepreneur, CppCon Speaker, GameMaker.fr community founder, Qt for Android contributor, Boost.Fusion maintainer since 2014.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd: https://events.digital-medium.co.uk
---

Registration for CppCon: https://cppcon.org/registration/

#cppcon #cppprogramming #cpp

show more

Share/Embed