Files
CMake/Help/generator/Ninja.rst
Martin Duffy ba6b6fbc24 Ninja: Add Build Dependencies for Tests
Add `test_prep/<test_name>` convenience targets to the ninja generator
to build dependencies of tests, and `test_prep/all` to build the dependencies
of all tests.

Build dependencies of a test include:
- Executables directly invoked by test `COMMAND`.
- Targets mentioned in generator expressionf os test `COMMAND`.
- Anything explicitly listed with the new `BUILD_DEPENDS` argument of `add_test`.

Issue: #27613
2026-05-26 15:16:19 -04:00

110 lines
2.6 KiB
ReStructuredText

Ninja
-----
Generates a ``build.ninja`` file into the build tree.
Builtin Targets
^^^^^^^^^^^^^^^
``all``
Depends on all targets required by the project, except those with
:prop_tgt:`EXCLUDE_FROM_ALL` set to true.
``install``
Runs the install step.
``install/strip``
.. versionadded:: 3.7
Runs the install followed by a ``CMAKE_STRIP`` command, if any.
The ``CMAKE_STRIP`` variable will contain the platform's ``strip`` utility, which
removes symbols information from generated binaries.
``install/parallel``
.. versionadded:: 3.30
Created only if the :prop_gbl:`INSTALL_PARALLEL` global property is ``ON``.
Runs the install step for each subdirectory independently and in parallel.
``test_prep/<test-name>``
.. versionadded:: 4.4
Created only if the :variable:`CMAKE_TEST_BUILD_DEPENDS` variable is
enabled. Builds all known build dependencies for the named test, including
the executable target invoked by the test, targets referenced by generator
expressions in the test command, and explicit ``BUILD_DEPENDS`` entries.
Tests with names that are not valid target names are excluded. If multiple
tests in different directories share the same name, their dependencies are
merged into one ``test_prep/<test-name>`` target.
``test_prep/all``
.. versionadded:: 4.4
Created only if the :variable:`CMAKE_TEST_BUILD_DEPENDS` variable is
enabled. Depends on every generated ``test_prep/<test-name>`` target.
For each subdirectory ``sub/dir`` of the project, additional targets
are generated:
``sub/dir/all``
.. versionadded:: 3.6
Depends on all targets required by the subdirectory.
``sub/dir/install``
.. versionadded:: 3.7
Runs the install step in the subdirectory, if any.
``sub/dir/install/strip``
.. versionadded:: 3.7
Runs the install step in the subdirectory followed by a ``CMAKE_STRIP`` command,
if any.
``sub/dir/test``
.. versionadded:: 3.7
Runs the test step in the subdirectory, if any.
``sub/dir/package``
.. versionadded:: 3.7
Runs the package step in the subdirectory, if any.
Fortran Support
^^^^^^^^^^^^^^^
.. versionadded:: 3.7
The ``Ninja`` generator conditionally supports Fortran when the ``ninja``
tool is at least version 1.10 (which has the required features).
Swift Support
^^^^^^^^^^^^^
.. versionadded:: 3.15
The Swift support is experimental, not considered stable, and may change
in future releases of CMake.
See Also
^^^^^^^^
.. versionadded:: 3.17
The :generator:`Ninja Multi-Config` generator is similar to the ``Ninja``
generator, but generates multiple configurations at once.