Bear records the flags passed to the compiler for each translation unit and stores them in a JSON file. This file can be used by Clang's tooling interface and programs like clang-check to process a translation unit.
cmake supports the generation of JSON compilation databases out of the box. For any other build system that does not support this, Bear can be used instead to intercept the invocation of the compiler.