We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
A Common Package Specification: Getting Build Tools to Talk to Each Other - Lessons Learned CppCon
Learn how to enable seamless interoperability between different build tools and systems, exploring the Common Package Specification and its role in defining what a package contains and how it can be used.
- A package specification is needed to allow build tools to interoperate.
 - A component is a part of the package, and properties are extensions that can be used.
 - The CPS (Common Package Specification) is a file that defines what a package contains.
 - The CPS is not intrinsic, and the build system needs to generate it.
 - Each component can have its own include directories and header files.
 - A single component can have multiple variants (e.g., debug and release).
 - The CPS should be able to handle scenarios with multiple configurations.
 - Interoperability between different build systems is important.
 - Debian package maintainers have experience with package specification.
 - The protoc executable from the Linux package can be used.
 - Conan packages have their own package specification.
 - The scope of CPS is the library, not the entire package.
 - Packaging is important for library distribution.
 - Common names for components can be problematic.
 - Package specification should not cover version information.
 - Consumers should be able to use the library’s headers directly.
 - Dynamic languages should be able to consume the package.
 - SBOM (Software Bill of Materials) generation is important.
 - Interoperability between different build systems is important for scalability.
 - Users should be able to select which configuration to use.
 - Version information needs to be present in the package specification.
 - Libraries should be able to be used in different environments.
 - The CPS should be looked for in the include directory.
 - Transparency between components is important.
 - The CPS can be used to specify properties of components.
 - Libraries should be able to be used in different configurations.
 - Debug and release configurations should be separate.
 - Interoperability with different build systems is essential.
 - Library information needs to be present in the package specification.
 - The CPS should be a file that defines what a package contains.
 - The package specification should not be a single file.
 - Interoperability between different systems is important.
 - The library contains the proto executable.
 - Consumers should be able to use the library’s artifacts.
 - Conan packages should be able to consume the package specification.
 - The CPS should be used to specify properties of components.
 - Libraries should be able to be used in different configurations.
 - The package specification should be looked for in the include directory.
 - Transparency between components is important.