FASTBuild
=========

.. versionadded:: 4.2

Generates a ``fbuild.bff`` file, which can be used to build the project with
`FASTBuild <https://www.fastbuild.org/docs/home.html>`_.

Usage
-----

Specify the generator when invoking :manual:`cmake(1)`:

.. code-block:: shell

  cmake [<options>] -G FASTBuild -B <path-to-build> [-S <path-to-source>]

This writes a FASTBuild configuration file named ``fbuild.bff`` into
``<path-to-build>``.

.. note::

   This generator also produces IDE project files for Visual Studio and Xcode,
   which are placed under:

   * ``<path-to-build>/VisualStudio`` – Visual Studio solution and projects
   * ``<path-to-build>/XCode`` – Xcode workspace and projects

   These IDE files can be generated by building ``xcode`` or ``solution`` targets
   and will build using FASTBuild as the backend.

Caching
-------

To enable FASTBuild caching, set the cache path using the
:variable:`CMAKE_FASTBUILD_CACHE_PATH` variable or the
``FASTBUILD_CACHE_PATH`` environment variable.

Then build with the ``-cache`` flag:

.. code-block:: console

   cmake --build <path-to-build> -- -cache

Compiler Behavior Variables
---------------------------

The following variables control how compiler nodes are emitted in the generated
``fbuild.bff``. These settings may affect build determinism, debug info paths,
include handling, and compiler argument formatting:

* :variable:`CMAKE_FASTBUILD_ALLOW_RESPONSE_FILE`
* :variable:`CMAKE_FASTBUILD_CLANG_GCC_UPDATE_XLANG_ARG`
* :variable:`CMAKE_FASTBUILD_CLANG_REWRITE_INCLUDES`
* :variable:`CMAKE_FASTBUILD_COMPILER_EXTRA_FILES`
* :variable:`CMAKE_FASTBUILD_FORCE_RESPONSE_FILE`
* :variable:`CMAKE_FASTBUILD_SOURCE_MAPPING`
* :variable:`CMAKE_FASTBUILD_USE_DETERMINISTIC_PATHS`
* :variable:`CMAKE_FASTBUILD_USE_LIGHTCACHE`
* :variable:`CMAKE_FASTBUILD_USE_RELATIVE_PATHS`

Configuration Variables
-----------------------

The following variables can be used to configure this generator:

* :variable:`CMAKE_FASTBUILD_CACHE_PATH`
* :variable:`CMAKE_FASTBUILD_CAPTURE_SYSTEM_ENV`
* :variable:`CMAKE_FASTBUILD_ENV_OVERRIDES`
* :variable:`CMAKE_FASTBUILD_IDE_ARGS`
* :variable:`CMAKE_FASTBUILD_TRACK_BYPRODUCTS_AS_OUTPUT`
* :variable:`CMAKE_FASTBUILD_VERBOSE_GENERATOR`

Target Properties
-----------------

The following target properties can be used to fine-tune behavior on a
per-target basis:

* :prop_tgt:`FASTBUILD_CACHING` –
  disables caching for a specific target.
* :prop_tgt:`FASTBUILD_DISTRIBUTION` –
  disables distributed compilation for a specific target.

Notes
-----

* This generator does not support directories as outputs of custom commands.
  If you do specify a directory as an output, it should be marked with the
  ``SYMBOLIC`` property to avoid incorrect behavior.
* It is highly advised to use custom commands with only one output.
  If multiple outputs are specified, the generator will emit an additional
  rule to check the outputs at build time. This adds overhead and is necessary
  because FASTBuild natively supports only a single output per custom step.

Example
-------

.. code-block:: shell

  cmake [<options>] -G FASTBuild -B <path-to-build> -DCMAKE_BUILD_TYPE=Release
  cmake --build <path-to-build> --target my_app

This generates ``fbuild.bff`` in ``<path-to-build>`` and uses FASTBuild
to build the ``my_app`` target.

See Also
--------

* :manual:`cmake-generators(7)`
* `FASTBuild Documentation <https://www.fastbuild.org/docs/documentation.html>`_
