# Ninja

Generates a `build.ninja` file into the build tree.

## Builtin Targets

`all`

> Depends on all targets required by the project, except those with `EXCLUDE_FROM_ALL` set to true.

`install`

> Runs the install step.

`install/strip`

> Added in version 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`

> Added in version 3.30: Created only if the `INSTALL_PARALLEL` global property is `ON`. Runs the install step for each subdirectory independently and in parallel.

`test_prep/<test-name>`

> Added in version 4.4: Created only if the `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`

> Added in version 4.4: Created only if the `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`

> Added in version 3.6: Depends on all targets required by the subdirectory.

`sub/dir/install`

> Added in version 3.7: Runs the install step in the subdirectory, if any.

`sub/dir/install/strip`

> Added in version 3.7: Runs the install step in the subdirectory followed by a `CMAKE_STRIP` command, if any.

`sub/dir/test`

> Added in version 3.7: Runs the test step in the subdirectory, if any.

`sub/dir/package`

> Added in version 3.7: Runs the package step in the subdirectory, if any.

## Fortran Support

Added in version 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

Added in version 3.15.

The Swift support is experimental, not considered stable, and may change in future releases of CMake.

## See Also

Added in version 3.17: The `Ninja Multi-Config` generator is similar to the `Ninja` generator, but generates multiple configurations at once.