The target model of modern CMake is a concise and powerful way to organize a projects build system through the explicit declaration of the dependencies between physical modules. However, due to their transitive nature, it's far too easy to add or remove a dependency without making the corresponding update to the build system. This is symptomatic of a general lack of visibility of module coupling, which is an important factor in overall code quality.
This talk will introduce link-what-you-include, a new open source tool that can compute a projects dependency tree and give you more control over its evolution. It is analogous to include-what-you-use, but targeting inter-library dependencies rather than inter-file dependencies. By keeping your project "link-what-you-include clean", you can not only maintain an accurate target model, but also prevent the degradation of a modular architecture into a ball of mud.
View Slides
Frank is a self taught programmer that learned the craft supporting bioengineering, cardiology, and GIS. He has been programming in C++ for a living since 2003 and has the major character flaw of starting a new job and rewriting the buildsystem in CMake. Frank is currently a software engineer at Esri.