Back to Cmake

CMAKE_EXPORT_BUILD_DATABASE

Help/variable/CMAKE_EXPORT_BUILD_DATABASE.rst

4.3.22.7 KB
Original Source

CMAKE_EXPORT_BUILD_DATABASE

.. versionadded:: 3.31

.. note::

This variable is meaningful only when experimental support for build databases has been enabled by the CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE gate.

Enable/Disable output of module compile commands during the build.

If enabled, generates a build_database.json file containing the information necessary to compile a target's C++ module sources with any tooling. The format of the JSON file looks like:

.. code-block:: javascript

{ "version": 1, "revision": 0, "sets": [ { "family-name" : "export_build_database", "name" : "export_build_database@Debug", "translation-units" : [ { "arguments": [ "/path/to/compiler", "...", ], "baseline-arguments" : [ "...", ], "local-arguments" : [ "...", ], "object": "CMakeFiles/target.dir/source.cxx.o", "private": true, "provides": { "importable": "path/to/bmi" }, "requires" : [], "source": "path/to/source.cxx", "work-directory": "/path/to/working/directory" } ], "visible-sets" : [] } ] }

This is initialized by the :envvar:CMAKE_EXPORT_BUILD_DATABASE environment variable, and initializes the :prop_tgt:EXPORT_BUILD_DATABASE target property for all targets.

.. note:: This option is implemented only by the :ref:Ninja Generators. It is ignored on other generators.

When supported and enabled, numerous targets are created in order to make it possible to build a file containing just the commands that are needed for the tool in question.

cmake_build_database-<CONFIG> Writes build_database_<CONFIG>.json. Writes a build database for the entire build for the given configuration and all languages. Not available if the configuration name is the empty string.

cmake_build_database-<LANG>-<CONFIG> Writes build_database_<LANG>_<CONFIG>.json. Writes build database for the entire build for the given configuration and language. Not available if the configuration name is the empty string.

cmake_build_database-<LANG> Writes build_database_<LANG>.json. Writes build database for the entire build for the given language and all configurations. In a multi-config generator, other build configuration database may be assumed to exist.

cmake_build_database Writes to build_database.json. Writes build database for all languages and configurations. In a multi-config generator, other build configuration database may be assumed to exist.