Using recipes

Many times a package doesn’t list its dependencies in a requirements.txt file, or it requires special defines or custom cmake(see Using custom cmake). A recipe helps simplify this, by allowing a package to be installed with a simple recipe name without needing to update the original package source.

Structure of a recipe

A recipe is a directoy which contains a ‘package.txt’ file and an optional ‘requirements.txt’ file. If a ‘requirements.txt’ is not provided, then the requirements file in the package will be used otherwise the requirements file in the recipe will be used and the package’s requirements.txt will be ignored.

Both files follow the format describe in Requirements file. The ‘package.txt’ file list only one package, which is the package to be installed. The ‘requirements.txt’ list packages to be installed as dependecies, which can also reference other recipes.

All recipe directories are searched under the $CGET_PREFIX/etc/cget/recipes/ directory. A cmake package can install additional recipes through cget.

For example, we could build a simple recipe for zlib so we don’t have to remember the url everytime. By adding the file $CGET_PREFIX/etc/cget/recipes/zlib/package.txt with the url like this:

We can now install zlib with just cget install zlib. Additionally, we can set additional options as well. For example, if we want to install boost, we can write $CGET_PREFIX/etc/cget/recipes/boost/package.txt to use the boost cmake(see Boost): --cmake boost

We can also make zlib a dependency of boost by writing a $CGET_PREFIX/etc/cget/recipes/boost/requirements.txt file listing zlib:


So, now we can easily install boost with cget install boost and it will install zlib automatically as well.

Getting recipes

The cget-recipes repository maintains a set of recipes for many packages. It can be easily installed with:

cget install pfultz2/cget-recipes