すべてのソースファイルにディレクトリ名を付けるのを避けるため、Makefileにvpathを使用しようとしています。しかし、私はそれが適切に動作するようにすることはできません。 SRCディレクトリが正しく含まれているMakefileのvpathがヘッダーファイルで機能しない
CC=gcc -Wall
vpath %.h include
vpath %.c src
all: main.c Event.o Macros.h
$(CC) $< Event.o -o test/a.out
Event.o: Event.c Event.h Macros.h
$(CC) -c $< -o [email protected]
:
は、ここでのMakefileです。つまり、Event.cファイルはgccによって検出されます。しかし、Event.hとMacros.hはどちらもそうではありません。 gccでEvent.cのコンパイル時に両方のファイルが見つからないというエラーが表示されます。
私は自分のCファイルの#includeディレクティブを一度にこれらのそれぞれに変更しようとしました。
#include "Event.h" /* doesnt work */
#include <Event.h> /* doesnt work */
#include "../include/Event.h" /* works */
この問題をお手伝いできますか?実際のMakefileがこれよりも大きいので、すべてのソースファイルの前にディレクトリ名を使用することを避けたい。
プロジェクトに含まれるに基づいて作成GCC解決されたパスを参照する方法はありますか? '-M -MG'は私が望むことを行います。つまり、エラーは無視されますが、解決されたパスは表示されません。 – Royi