Categorygithub.com/jpeach/mj
modulepackage
0.0.0-20230925235325-b0edbe81db17
Repository: https://github.com/jpeach/mj.git
Documentation: pkg.go.dev

# README

mj: generate JSON compilation databases using Clang

mj is a simple tool that runs a Clang commandline and injects the -MJ option to make it easier to generate a JSON compilation database. The clang -MJ option emits a compilation database fragment for the single file that is being compiled. Once the full project build is complete, you can run mj --collect to gather the fragments into a single compile_commands.json file.

Installation

You can install mj using the go install command:

$ go install github.com/jpeach/mj@latest

Usage

usage: mj OPTIONS|COMPILATION...

mj injects Clang compiler options to generate a compilation database.
If no options are provided, the arguments to mj should be a full Clang
commandline. mj will inject the '-MJ' option and run the Clang command.

Options:
  --clean    This option recursively removes all the ".mj" directories
             generated during a compilation.
  --collate  This option finds all the compilation database fragments
             generated by Clang, and collates them into a single file
             named "compile_commands.json".
  --help, --usage
             Show this help message.

Example

Say you have a build that accepts the CC and CXX environment variables, but does not explicitly support building a JSON compilation database. You can build your project normally, but substitute mj as a compiler wrapper. The compilation process will emit JSON fragments as files with the extension .db.json in a .mj directory next to your object files. When the build is complete, mj can collate these into a single JSON compilation database.

$ make CC="mj clang" CXX="mj clang++"
...
$ find . -name *.db.json | wc -l
495
$ mj --collate
$ ls -hl compile_commands.json
-rw-r--r-- 1 jpeach staff 1.3M Jun  8 11:47 compile_commands.json

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author