0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

vim ale で clangd で C++ コンパイルオプションがうまく渡らないっぽいメモ

Last updated at Posted at 2022-09-12

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 がよいでしょう
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?