在什么情况下需要定位.h文件

时间:2016-03-11 13:53:14

标签: c++ makefile

在我看到的makefile文件示例中,头文件被列为(并且仅列出)作为这样的目标的依赖项,没有特定的规则以cc文件的目标方式定位头文件本例中的规则

sample1.o : sample1.cc sampleheader1.h
   g++ -Wall -c sample1.cc

我的项目有这样的目录结构     SRC / hello.cc     页眉/ cctz.h

cctz.hhello.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文件(我该怎么做)

1 个答案:

答案 0 :(得分:5)

make程序首先在makefile文件目录中查找文件,除非您指定文件的路径:

hello.o: hello.cc ../headers/cctz.h

make对您在其中设置的编译器选项一无所知,例如CPPOPTIONS

您还可以设置VPATH

VPATH = ../headers