# CMAKE_EXPORT_BUILD_DATABASE

New in version 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:

    {
      "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 `CMAKE_EXPORT_BUILD_DATABASE` environment variable, and initializes the `EXPORT_BUILD_DATABASE` target property for all targets.

Note

This option is implemented only by the 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.