在我看到的makefile文件示例中,头文件被列为(并且仅列出)作为这样的目标的依赖项,没有特定的规则以cc文件的目标方式定位头文件本例中的规则
sample1.o : sample1.cc sampleheader1.h
g++ -Wall -c sample1.cc
我的项目有这样的目录结构 SRC / hello.cc 页眉/ cctz.h
cctz.h
是hello.cc
包含的头文件。
但是,当我为我的项目创建一个makefile时,make抱怨no rule to make target 'cctz.h
需要hello.o
。 makefile位于我的src
目录中,因此../headers
到达cctz.h
CPPOPTIONS = -I../headers
all: hello
hello: hello.o
g++ -Wall -o $@
hello.o: hello.cc cctz.h
g++ -Wall $(CPPOPTIONS) -c hello.cc
所以,在我的程序中,我需要target
头文件,但在我见过的其他makefile中(比如我提供了一个片段),头只被列为目标的依赖项,那里没有规则可以做到。我做错了什么或为什么我需要在我的案例中定位cctz.h
文件(我该怎么做)
答案 0 :(得分:5)
make
程序首先在makefile文件目录中查找文件,除非您指定文件的路径:
hello.o: hello.cc ../headers/cctz.h
make
对您在其中设置的编译器选项一无所知,例如CPPOPTIONS
。
您还可以设置VPATH
:
VPATH = ../headers