Files
CMake/Help/generator/FASTBuild.rst
Eduard Voronkin 01147454e7 FASTBuild: Add generator
Fixes: #15294
2025-08-26 14:29:01 -07:00

70 lines
2.1 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FASTBuild
=========
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.
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_COMPILER_EXTRA_FILES`
* :variable:`CMAKE_FASTBUILD_ENV_OVERRIDES`
* :variable:`CMAKE_FASTBUILD_TRACK_BYPRODUCTS_AS_OUTPUT`
* :variable:`CMAKE_FASTBUILD_USE_LIGHTCACHE`
* :variable:`CMAKE_FASTBUILD_VERBOSE_GENERATOR`
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>`_