LLVMを利用するC言語のコンパイラ
オプション
無限にある
https://clang.llvm.org/docs/ClangCommandLineReference.html
--std=<version>c23とかc++23とか(後者はclang++)clang --std= a.cのように<version>を指定せずに--stdオプションを渡してビルドしようとすると、利用可能なバージョンを確認できる- 他の方法ってないんですか?
--helpにもman clangにも載っていないような気がする
-MJ <JSON file name>compile_commands.jsonで使えるコンパイルコマンド情報を出力- 例えばこんな出力になる:
{ "directory": "/tmp/tmp.Y71Bn3TacX", "file": "a.c", "output": "/tmp/a-b09d6e.o", "arguments": ["/usr/bin/clang-20", "-xc", "a.c", "-o", "/tmp/a-b09d6e.o", "-lm", "-dumpdir", "a-", "--target=x86_64-pc-linux-gnu"]},
- 例えばこんな出力になる:
printf '[%s]\n' "$(find build -name '*.json' -a -not -name 'compile_commands.json' | xargs cat | sed 's/,$//')" > build/compile_commands.jsonのようにすることでcompile_commands.jsonが作れるcompile_commands.jsonは配列である必要があるので、JSONファイルを全部連結して、最後のカンマを削除し、 printf によって[]で囲む必要がある- これ一発でやる専用のコマンドとかないのかね
-MD- 依存しているヘッダファイルなどが記述された deps ファイルを生成してくれる
- Makefileで
-include hoge.depsすることで、ヘッダが更新されたときにビルドし直すことができる -MF <path>で出力先ファイルを指定できる