プロジェクトにmake
ファイル(cmake/premake/ninjaなどではない)があり、gccとclangで機能するとします。それらからJSONコンパイルデータベースを生成して、clang-modernize
ツールにフィードします。そのようなことをする方法? (clangインフラストラクチャまたはmake CC='cc_args.py gcc' CXX='cc_args.py g++'
のような使用法のスクリプトまたは他のツールにパーサーはありますか?)
私は個人的な経験はありませんが、 Bear はあなたのシナリオをターゲットにしているようです。 (clang-modernizeサイトからリンクされていました。)
Makeには、コンパイラのコマンドラインを標準出力に出力するという通常は望ましくない機能がありますが、この場合は、シェル(および jq )パイプラインで使用できます。 GNU Make の場合:
make --always-make --dry-run \
| grep -w 'gcc|g++' \
| grep -w '\-c' \
| jq -R '[inputs|{directory:".", command:., file: match(" [^ ]+$").string[1:]}]' \
> compile_commands.json
ただし、これは、makefileが-C
引数を使用してサブディレクトリ内で自身(または他のmakefile)を再帰的に呼び出す場合は処理しません。