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.