🐖

clang の --configオプション

2023/04/02に公開

はじめに

clang に --configオプションというのをあるのを知りました。

https://clang.llvm.org/docs/UsersManual.html#configuration-files

clang 16あたりから追加でしょうか。

https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html#non-comprehensive-list-of-changes-in-this-release

おためし

以下のようなフォルダ構成、コードを用意します。

フォルダ構成
$ tree
.
├── hello.c
├── inc
│   └── sample.h
└── sample.cfg

それぞれのファイルの中身は以下

hello.c
#include <stdio.h>
#include "sample.h"

int main() {
        sample();
        printf("hello world\n");
        return 0;
}
inc/sample.h
int sample(void) {
        printf("sample.\n");
        return 0;
}
sample.cfg
-Iinc

バージョンは以下

$ clang --version
clang version 16.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix

インクルードパスを指定しないと当然エラー

$ clang -o hello hello.c
hello.c:2:10: fatal error: 'sample.h' file not found
#include "sample.h"
         ^~~~~~~~~~
1 error generated.

いつも通り(?) -Iオプションでインクルードパスを指定

$ clang -Iinc -o hello hello.c
$ ./hello
sample.
hello world

--configを指定してみる

$ clang --config=./sample.cfg -o hello hello.c
$ ./hello
sample.
hello world

--configでもできました。

Discussion