Skip to content

Details

Description

Using dependencies in C and C++ has always been challenging, rooted in the fractured compiler and build systems ecosystem and the intrinsic complexity of building C and C++. With the maturity of C, C++ dependency and package managers, now there is a demand for better interoperability among the different tools.

This talk will present an overview of existing mechanisms for specifying dependencies in different build systems, like environment variables, pkg-config .pc files and CMake “config” files, diving a bit deeper into the latter, including the “find_package()” functionality. Also, the disadvantages of tools such as “FetchContent()” from the dependency management perspective will be discussed.

In this quest for interoperability, Conan package manager introduced the “package_info” concept, which will be reviewed as the mechanism that has allowed the different build systems to communicate at scale.

Now, a group of people from different organizations such as Kitware (CMake), Bloomberg, JFrog (Conan), Microsoft, etc, are collaborating together in the Common Package Specification (CPS) as a standardized representation of a package that can be used across the different tools in the ecosystem. This CPS is not just a spec, it already has some implementations,for example it could be highlighted that CMake 4 recently removed the “experimental” gates, and Conan also supports it. The talk will introduce CPS, how it works, and the current support by existing tools, with full demos including a full round trip of package creation and consumption with CPS with CMake and Conan.

Finally, a discussion of what “comes next” in C, C++ dependency management will be done: SBOMs, compliance, reproducibility, traceability, security, and many more.

About the Presenter

Diego Rodriguez-Losada‘s passions are robotics and SW engineering and development. He has developed many years in C and C++ in the Industrial, Robotics and AI fields. Diego was also a University (tenure track) professor and robotics researcher for 8 years, till 2012, when he quit academia to try to build a C/C++ dependency manager and co-founded a startup.. Since then he mostly develops in Python. Diego is a conan.io C/C++ package manager co-creator and maintainer, now working at JFrog as Conan Lead Architect and C/C++ Advocate.

Related topics

C & C++
Computer Programming
Software Development
Software Engineering

You may also like