mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
Provide a `.devcontainer` definition, following the Dev Container Specification, to give contributors a ready-made Linux environment with the tools needed to build CMake, run its test suite, build its documentation, and satisfy its style rules. Base the container on Ubuntu, which offers the broadest ecosystem of packages and tooling for development, including a recent `cmake` and the `clang-format` version our style rules require, exactly. Mirror the package lists of the Debian image our CI infrastructure uses, section by section, so that the dependencies available closely match the ones against which merge requests are tested. Build the image the way the images under `.gitlab/ci/docker/` are built: bind mount the package lists and the installation script rather than copying them in, and cache the package lists and downloaded archives so that a rebuild fetches only what has changed. Run optional `.devcontainer/hooks/root.sh` and `.devcontainer/hooks/user.sh` scripts, both ignored by Git, so that developers may customize the container without modifying tracked files. Document usage in a new `Help/dev/devcontainer.rst`. Fixes: #28043
CMake Development ***************** This directory contains documentation about development of CMake itself. It is not part of the user documentation distributed with CMake. Contributor Instructions ======================== See `CONTRIBUTING.rst`_ for instructions to contribute changes. The process for contributing changes is the same whether or not one has been invited to participate directly in upstream development. .. _`CONTRIBUTING.rst`: ../../CONTRIBUTING.rst Upstream Development ==================== CMake uses `Kitware's GitLab Instance`_ to manage development, review, and integration of changes. The `CMake Repository`_ holds the integration branches and tags. Upstream development processes are covered by the following documents: * The `CMake Review Process`_ manages integration of changes. * The `CMake Integration Testing`_ infrastructure tests changes before and after merging. .. _`Kitware's GitLab Instance`: https://gitlab.kitware.com .. _`CMake Repository`: https://gitlab.kitware.com/cmake/cmake .. _`CMake Review Process`: review.rst .. _`CMake Integration Testing`: integration-testing.rst Developer Documentation ======================= CMake developer documentation is provided by the following documents: * The `CMake Dev Container Guide`_. * The `CMake Source Code Guide`_. * The `CMake Documentation Guide`_. * The `CMake Testing Guide`_. * The `CMake Experimental Features Guide`_. * The `CMake Debugging Guide`_. * The `CMake Diagnostics Guide`_. .. _`CMake Dev Container Guide`: devcontainer.rst .. _`CMake Source Code Guide`: source.rst .. _`CMake Documentation Guide`: documentation.rst .. _`CMake Testing Guide`: testing.rst .. _`CMake Experimental Features Guide`: experimental.rst .. _`CMake Debugging Guide`: debug.rst .. _`CMake Diagnostics Guide`: diagnostics.rst Maintainer Documentation ======================== CMake maintainer documentation is provided by the following documents: * The `CMake Maintainer Guide`_. .. _`CMake Maintainer Guide`: maint.rst