Back To Schedule

The importance of the build system target model

16:30 - 18:00 Monday 29th April 2024 MT Flug Auditorium

In the C++ Developer Survey (2023), the top issues all revolve around build-related issues: managing dependencies, setting up CI/CD pipelines, dealing with CMake, setting up toolchains and IDEs, and improving build times. All of these issues can be mitigated with a better understanding of the "target model" and its wider application.

Since 1983, developers have been creating libraries and programs with C++. Initially software was built with makefiles or shell scripts or direct invocation of the compiler. Over time, software complexity has increased leading to a significant rise in the need for reuse. This need led to the development of new build tools like CMake. Early build systems focused primarily on flags leading to tools like pkg-config. In 2012, the KDE/CMake community initiated work on "Modern CMake". This novel approach centered on creating a graph of nodes (targets) and leveraging graph theory principles, such as topological sorting, to control builds via transitive properties across targets. All modern build systems (CMake, Bazel, Meson, and Bjam) support this "Target model" to some extent. The key of this approach is to allow developers to specify both the information needed to build a target and the information needed for other targets to consume it. This concept and its application are key to unlocking package management, C++ 20 modules and consistent builds for C++.

This talk will explore and explain this model, its history and its importance to the C++ community. Specifically, it will explore its relationship with the development of the Common Package Specification (CPS), dependency management practices, C++ 20 modules, and the maintenance of C++ projects in a sustainable manner. Attendees will come away from the talk with an understanding of this fundamental feature of modern build systems and how its broader application will help solve some of the C++ community's top complaints.

View Slides

Bill Hoffman


Mr. Hoffman is a founder of Kitware and currently serves as Chairman of the Board, Vice President, and Chief Technical Officer (CTO). He is the original author and la ead architect of CMake, an open source, cross-platform build and configuration tool that is used by millions of developers around the world, and he is the co-author of the accompanying text, Mastering CMake. Using his 20+ years of experience with large software systems development, Mr. Hoffman is also a major technical contributor to Kitware’s Visualization Toolkit, Insight Toolkit, and ParaView projects.

As CTO, Mr. Hoffman’s emphasis is on software development methodologies and establishing best practices across the breadth of Kitware’s development efforts. As one of the visionaries leading the quality software process efforts at Kitware, Bill has been instrumental in adopting agile programming practices, fueling Kitware’s software development. He is a frequent speaker on these subjects at CppCon, C++Now, and other conferences.

Mr. Hoffman received a B.S. in Computer Science from the University of Central Florida and an M.S. in Computer Science from Rensselaer Polytechnic Institute (RPI). Prior to the formation of Kitware, he spent nine years at the General Electric Corporate Research and Development center, working in the Computer Vision Group. He has planned and taught several graduate-level courses at RPI as well as a course in object-oriented programming at New York University.