cmake/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst

41 lines
1.5 KiB
ReStructuredText
Raw Normal View History

2016-07-09 11:21:54 +02:00
CMAKE_NINJA_OUTPUT_PATH_PREFIX
------------------------------
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.6
2023-07-02 19:51:09 +02:00
Tell the :ref:`Ninja Generators` to add a prefix to every output path in
``build.ninja``. A trailing slash is appended to the prefix, if missing.
2016-07-09 11:21:54 +02:00
2023-07-02 19:51:09 +02:00
This is useful when the generated ninja file is meant to be embedded as a
``subninja`` file into a *super* ninja project. For example, the command:
2016-07-09 11:21:54 +02:00
2023-07-02 19:51:09 +02:00
.. code-block:: shell
2016-07-09 11:21:54 +02:00
2023-07-02 19:51:09 +02:00
cd super-build-dir &&
cmake -G Ninja -S /path/to/src -B sub -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/
# ^^^---------- these match -----------^^^
generates a build directory with its top-level (:variable:`CMAKE_BINARY_DIR`)
in ``super-build-dir/sub``. The path to the build directory ends in the
output path prefix. This makes it suitable for use in a separately-written
``super-build-dir/build.ninja`` file with a directive like this::
2016-07-09 11:21:54 +02:00
subninja sub/build.ninja
2023-07-02 19:51:09 +02:00
The ``auto-regeneration`` rule in ``super-build-dir/build.ninja`` must
have an order-only dependency on ``sub/build.ninja``.
.. versionadded:: 3.27
The :generator:`Ninja Multi-Config` generator supports this variable.
2016-07-09 11:21:54 +02:00
.. note::
When ``CMAKE_NINJA_OUTPUT_PATH_PREFIX`` is set, the project generated
by CMake cannot be used as a standalone project. No default targets
are specified.
2023-07-02 19:51:09 +02:00
The value of ``CMAKE_NINJA_OUTPUT_PATH_PREFIX`` must match one or more
path components at the *end* of :variable:`CMAKE_BINARY_DIR`, or the
behavior is undefined. However, this requirement is not checked
automatically.