mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
111 lines
3.3 KiB
ReStructuredText
111 lines
3.3 KiB
ReStructuredText
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_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>`_
|