CMAKE_EXPORT_BUILD_DATABASEΒΆ

Added 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.