.. _recipes-project: ================= Project Recipes ================= Project :term:`recipes ` include some aspects of software projects: * Name of the :term:`project` * :term:`Nature` of the :term:`project` (e.g. `CMake`_, Python setuptools, …) * Repository URL * Specific build instructions if different from default build instructions for the :term:`project's ` :term:`nature`. Moreover, customizations are possible. A basic :term:`project` :term:`recipe`, which in this case would be stored in a file named :file:`rsb-cpp.project`, looks like this: .. code-block:: yaml templates: - code-cor-lab - cmake-cpp - base variables: description: >- C++ implementation of the robotics service bus (RSB) keywords: - middleware - integration - robotics repository: https://code.cor-lab.org/git/rsb.git.cpp redmine-project: rsb cmake.options: - BUILD_TESTS=OFF - BUILD_EXAMPLES=OFF - "@{next-value|[]}" The following fields are most important: :samp:`{FILENAME}` This is not an actual field but the name of the :term:`recipe file ` with its extension removed (e.g. ``rsb-cpp`` for a :term:`recipe file ` named :file:`rsb-cpp.project`). Must be unique w.r.t. to all other :term:`projects ` in the repository. Should in general not contain any version information (unless particular versions of a project genuinely constitute their own :term:`projects `). ``templates`` TODO A list of :term:`template` names characterizing the technical and organizational nature of the project. For most basic purposes, it is sufficient to choose a suitable :term:`template` for the build system used by the project and the ``base`` :term:`template` to inherit specifications for the general nature of build jobs to create. TODO It is important to note that :term:`templates