Generating a JSON compilation database
To generate compile_commands.json for your project, you can use compilers, build systems, and specialized tools:
Use the CMAKE_EXPORT_COMPILE_COMMANDS flag. You can either runcmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
or add the following line to your CMakeLists.txt script:set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
The compile_commands.json file will be put into the build directory.
Clang (version 5.0 and later)
The -MJ option writes a compilation entry per input file. You can use it for each file in the project, and then merge the outputs into a JSON-formatted compilation database (refer to the procedure example).
Ninja (version 1.2 and later)
To get a compilation database, use the -t compdb option. Note that it requires rule names as arguments:
-t compdb rule1 rule2...The list of rules is provided in the Ninja build file (default name build.ninja), for example:rule cc command = gcc -c -o $out $in description = CC $out rule link command = gcc -o $out $in description = LINK $out
To generate a compilation database for one rule named
cc, specify the following:-t compdb cc > compile_commands.json
But for multiple rules, you need to get their exact names from the build file and pass them to compdb (refer to one of the possible solutions).
The compiledb-generator tool creates compilation databases for make-based build systems.
Bear and intercept-build tools
SourceTrail Visual Studio extension