Skip to content
Bret Brown edited this page Mar 2, 2024 · 13 revisions

Welcome to the CPS wiki!

Hi! Thanks for your interest into the Common Package Specification (CPS). These documents are intended to supplement the specification itself with community-editable tutorials, guides, and other explanations.

Specific steps to solve specific problems!

Cookbook

How do I write a CPS file for a given type of project?

Single Static Library

In a file called fmt.cps:

{
  "name": "fmt",
  "description": "An open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.",
  "license": "MIT",
  "version": "10.2.1",
  "default_components": [ "fmt" ],
  "components": {
    "fmt": {
      "type": "archive",
      "definitions": ["FMT_HEADER_ONLY=0"],
      "requires": [],
      "includes": "@prefix@/include",
      "location": "@prefix@/lib64/libfmt.a"
    }
  }
}

Explanations

Concepts, context, and other ways to grow understanding.

See the CppCon 2023 talk called Libraries: A First Step Toward Standard C++ Dependency Management by Bill Hoffman and Bret Brown to understand the motivation and goals for CPS.


Reference Documentation

Facts, specifics, and other information

Reference documentation for CPS is maintained in the CPS specification. Since precision and review are important to maintaining a specification, those documents are maintained using a more structured pull request workflow. Please use PRs and issues on the CPS repo itself to contribute to the CPS specification.


Contributors' Guide

It can be challenging to write documentation that serves all purposes for all readers. The documentation for CPS is instead structured into the documentation system described by Divio. It's expected that approach will be more approachable both for readers and for contributors to the documentation. If you have ideas, questions, or concerns, please open an issue on this repo describing what you expected and what happened instead.

Clone this wiki locally