次のコードツリーを試しました。ヘッダー ファイル hello.h を「inc」アーカイブに入れ、MM オプションを使用すると、システムは、makefile に vpath コマンドを追加しても hello.h が見つからないと報告しました。hello.h を hello.c の同じディレクトリに戻すと、gcc -MM は正常に動作し、依存ファイルが正常に一覧表示されます。
ヘッダーファイルを自動的に見つける場所をgccに知らせるにはどうすればよいですか? 以下はコードツリーで、「hello.h」はアーカイブ「inc」に配置されています。
total 12
-rw-r--r-- 1 root root 101 Jun 22 14:13 hello.c
drwxr-xr-x 2 root root 4096 Jun 22 14:14 inc
-rw-r--r-- 1 root root 139 Jun 22 14:18 makefile
以下は私のメイクファイルの内容です:
vpath %.h /home/tempcode/inc
hello: hello.o
gcc -o hello hello.o
hello.o: hello.c hello.h
gcc -c hello.c
debug:
gcc -MM hello.c
このようにgccを直接実行するとうまくいくことに戸惑います。これは、VPATH または vpath が gcc がインクルード パスを見つけるのに役立たないということですか? もしそうなら、vpath 変数は「make」がヘッダー ファイルを見つけるのに役立つだけで、gcc には役立たないと思いますか?
[root@localhost tempcode]# gcc -MM -I/home/tempcode/inc hello.c
hello.o: hello.c /home/tempcode/inc/hello.h