UBT GenerateClangDatabase is NOT incremental and recreates whole compile_commands.json each time

Also, if you’re interested @mel , they’ve added few additional flags into this tool since 5.4.

This is what we have in 5.6:

/// <summary>
/// Optional set of source files to include in the compile database. If this is empty, all files will be included by default and -Exclude can be used to exclude some.
/// Relative to the root directory, or to the project file.
/// </summary>
[CommandLine("-Include=")]
List<string> IncludeRules = new List<string>();

/// <summary>
/// Optional set of source files to exclude from the compile database. 
/// Relative to the root directory, or to the project file.
/// </summary>
[CommandLine("-Exclude=")]
List<string> ExcludeRules = new List<string>();

/// <summary>
/// Execute any actions which result in code generation (eg. ISPC compilation)
/// </summary>
[CommandLine("-ExecCodeGenActions")]
[CommandLine("-NoExecCodeGenActions", Value = "false")]
public bool bExecCodeGenActions = true;

/// <summary>
/// Optionally override the output filename for handling multiple targets
/// </summary>
[CommandLine("-OutputFilename=")]
public string OutputFilename = "compile_commands.json";

/// <summary>
/// Optionally overrite the output directory for the compile_commands file.
/// </summary>
[CommandLine("-OutputDir=")]
public string OutputDir = Unreal.RootDirectory.ToString();
1 Like