/CMake 3.19


New in version 3.5.

Enable/Disable output of compile commands during generation.

If enabled, generates a compile_commands.json file containing the exact compiler calls for all translation units of the project in machine-readable form. The format of the JSON file looks like:

    "directory": "/home/user/development/project",
    "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
    "file": "../foo/foo.cc"


    "directory": "/home/user/development/project",
    "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
    "file": "../foo/bar.cc"

This is initialized by the CMAKE_EXPORT_COMPILE_COMMANDS environment variable.


This option is implemented only by Makefile Generators and the Ninja. It is ignored on other generators.

This option currently does not work well in combination with the UNITY_BUILD target property or the CMAKE_UNITY_BUILD variable.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.