cmake で生成した compile_commands.json
はある.
しかしなぜか特定の環境(筆者では Ubuntu 22.04 + apt で入る clang-14, clangd-14 で確認)でコンパイルオプションがうまくわたらぬ.
以下のように compile_commands.json
では -Wno-c++98-compat
設定されているのに...
{ "directory": "/home/syoyo/work/tinyusdz/build",
"command": "/usr/bin/clang++ -DTINYUSDZ_USE_USDOBJ -DTINYUSDZ_USE_USDVOX -DTINYUSDZ_WITH_AUDIO -DTINYUSDZ_WITH_COLORIO -DTINYUSDZ_WITH _EXR -DTINYUSDZ_WITH_OPENSUBDIV -I/home/syoyo/work/tinyusdz/src -I/home/syoyo/work/tinyusdz/src/external/fast_float/include -I/home/syoyo/work/tinyusdz/src/external/simple_match/include -I/home/syoyo/work/tinyusdz/src/external/jsonhpp -I/home/syoyo/work/tinyusdz/src/osd -g -fno-exceptions -std=c++14 -Weverything -Werror -Wno-padded -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-documentation -Wno-unuse -d-member-function -o CMakeFiles/tinyusdz_static.dir/src/usdGeom.cc.o -c /home/syoyo/work/tinyusdz/src/usdGeom.cc",
"file": "/home/syoyo/work/tinyusdz/src/usdGeom.cc" } },
c++ コードで auto
に warning が出る...(-Wc++98-compat
)
ale で linter を clang++
にするといけるっぽい(ただ補完ができなくなる)
ale だと clangd 呼び出しとか失敗してもエラーださないのでデバッグのやりかたがわからぬ...
(vim をデバッグモードで起動すればいいんじゃろか...)
clangd 側で command
からうまく -I
とか extract できていないんじゃろかね...
とりあえずの解決
ClangdでC++ソースコードを補完する際にコンパイルオプションを指定する方法
https://uchan.hateblo.jp/entry/2018/12/29/104132
に従って, compile_commands.json
ではなく compile_flags.txt
提供でとりあえずはいけます...
(compile_commands.json
は削除しなければならない)
にあるように, g:ale_cpp_clang_options
を設定(.vim.local
で設定)は著者環境ではうまくいきませんでした.
ALE 自体は C++ 特化というわけでないので, CoC を使ったほうがよさそうです!
ただ, CoC はインデクシングが遅いときがあるのが難点ね..
TODO
- 原因を調べる
-
ale 以外の linter + completion ツールを試す
- CoC がよいでしょう