| 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>`_ |