У меня есть следующий make файл:
CC=g++
INC_DIR = ../StdCUtil
CFLAGS=-c -Wall -I$(INC_DIR)
DEPS = split.h
all: Lock.o DBC.o Trace.o
%.o: %.cpp $(DEPS)
$(CC) -o [email protected] $< $(CFLAGS)
clean:
rm -rf *o all
Этот файл makefile и все три исходных файла Lock.cpp
, DBC.cpp
, Trace.cpp
расположены в текущем каталоге с именем Core
. Один из исходных файлов Trace.cpp
содержит строку, которая содержит файл заголовка за пределами текущего каталога:
//in Trace.cpp
#include "StdCUtil/split.h"
Заголовочный файл split.h
расположен на одном уровне выше текущего каталога, а затем в подкаталоге StdCUtil
. Поэтому я добавил INC_DIR = ../StdCUtil
в make файл. Общая структура каталогов выглядит следующим образом:
root
|___Core
| |
| |____Makefile
| |____DBC.cpp
| |____Lock.cpp
| |____Trace.cpp
|
|___StdCUtil
|___split.h
Но когда я это сделаю, это дает мне ошибку:
Trace.cpp:8:28: fatal error: StdCUtil/split.h: No such file or directory
#include "StdCUtil/split.h"
^
compilation terminated.
<builtin>: recipe for target 'Trace.o' failed
Почему это не находит заголовочный файл split.h
, даже если я укажу INC_DIR
в файле makefile? Как исправить это?