LoginSignup
1
0

More than 1 year has passed since last update.

clangdで別ディレクトリのヘッダーを指定したい

Last updated at Posted at 2021-12-30

はじめに

こんにちは。最近vimを使い始めたvimmer見習いのsudoです。
正確にはneovimを使っています。
LSPクライアントはcoc-nvim、C/C++を書くときのLSPはclangdを使用しています。
LSPを導入することによってコードを書く際に補完やエラーの表示が可能になり、vimを便利エディターにすることができます。

発生した問題

C言語/C++を書くときにヘッダーファイルを別ディレクトリに入れた場合にヘッダーがfile not foundになる。

例えば、ディレクトリ構造、ファイルの中身が以下のようになっていた場合を想定します。

.
├── Makefile
├── includes
│   └── test.h
└── srcs
    └── main.c

main.c
#include "test.h"

int main()
{
    printf("hogehoge--");
}
test.h
#ifndef TEST_H
#define TEST_H
#include <printf.h>
#endif

このとき、何もしないと下の画像のようにtest.hがfile not foundになってしまいます。
Screen Shot 2021-12-30 at 23.46.36.png

解決方法

compile_flags.txtというファイルを作成する

プロジェクトの一番上の階層(上のファイルツリーだとMakefileと同じ階層)にcompile_flags.txtもしくはcompile_commands.jsonというファイルを作成してコンパイルオプションを指定することによって解決しました。

compile_flags.txt
-I./includes/

たぶんcompile_flags.txtの方が書くのが楽そうです。
参考: https://uchan.hateblo.jp/entry/2018/12/29/104132

さいごに

毎回手動で記述するのも面倒なので、Makefileからcompile_flags.txtを自動生成するコマンドを作りたいと思いました。いつか。
vimは楽しいですが、周りに使っている人が少ないので何か問題が発生したときに気軽に聞けないのがデメリットだと個人的に思っています。

追記

compiledbを使用するとMakefileからcompile_comamnds.jsonを自動生成してくれました。

1
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
1
0