2013-10-21 62 views
1

我想避免C++文件头文件声明中的相对路径。所以,我通过一个在线示例使用了makefile。但我得到错误。请检查代码,并帮助我解决这个MakeFile:不同目录中的头文件 - 错误

COMPILER = g++ 
IDIR = ./include 
CXXFLAGS += -I$(IDIR) 
CFLAGS += -I$(IDIR) 

EXEC = hello 
OBJECTS = main.o factorial.o hello.o 

all: $(EXEC) 

(---- I had also used CFLAGS instead of CXXFLAGS below but the same result###) 

$(EXEC): $(OBJECTS) 
    $(COMPILER) $(CXXFLAGS) $(OBJECTS) -o $(EXEC) 

main.o: main.cpp ./include/functions.h 
    $(COMPILER) $(CXXFLAGS) -c main.cpp 

factorial.o: main.cpp ./include/functions.h 
    $(COMPILER) $(CXXFLAGS) -c factorial.cpp 

hello.o: main.cpp ./include/functions.h 
    $(COMPILER) $(CXXFLAGS) -c hello.cpp 

错误:

化妆:*没有规则,使目标“包括main.o‘创造“所规定 ’/ functions.h 。关闭。

目录结构

- main.cpp 
- factorial.cpp 
- hello.cpp 
- MakeFile.mk 
- +include (dir) 
     ----->functions.h 

main.cpp中包含----包括 “functions.h” ----在日e标题声明

+2

这是一个纯粹的'make'错误消息。该错误与任何.cpp或.h文件的内容无关。这个错误实际上只能来自Makefile的内容,以及它中指定的文件的存在与否。因此,'make'声明它找不到'include/functions.h'文件。仔细检查它实际上是在这里,正确的名称和匹配的情况。 –

+0

谢谢你的回复。但是我使用的是与帖子中提到的相同的目录结构,并且我检查了拼写,匹配大小写,但所有内容似乎都是在帖子中显示的。我仍然获得相同的错误 – sunny

+0

只是为了检查,是“+ include”目录名称的“+”部分吗? –

回答

2

您不使用h文件作为源文件。 应该只有:

main.o: main.cpp
$(COMPILER) $(CXXFLAGS) -c main.cpp

编辑:

我复制你的文件夹的内容和编写简单的应用程序,其中HELLO.CPP有一个简单的空函数,factorial.cpp有简单的INT-返回函数ANE main.cpp具有int main()并使用此函数,include.h hafe声明了这两个虚函数。 现在。我生成文件看起来:

COMPILER = g++ 
IDIR = ./include 
CXXFLAGS += -I$(IDIR) 
EXEC = hello 
OBJECTS = main.o factorial.o hello.o 

all: $(EXEC) 

$(EXEC): $(OBJECTS) 
     $(COMPILER) $(CXXFLAGS) $(OBJECTS) -o $(EXEC) 

main.o: main.cpp factorial.o hello.o 
    $(COMPILER) -c $(CXXFLAGS) $^ -o [email protected] 

factorial.o: factorial.cpp 
    $(COMPILER) -c $(CXXFLAGS) $^ -o [email protected] 

hello.o: hello.cpp 
    $(COMPILER) -c $(CXXFLAGS) $^ -o [email protected] 

download for my sample

这应该可以帮助您!

+0

谢谢你的回复。当我有相应的变化,我得到这个错误 g ++ -I./include -c main.cpp main.cpp:2:23:致命错误:functions.h:文件或目录未找到 – sunny

+0

是的,但你有指定一个头文件。你必须有-I./include/functions.h所以改变IDIR = ./include到IDIR = ./include/functions.h – Preetygeek

+0

谢谢我已经做了同样的事情现在我得到 g ++ -I./include /functions.h -c main.cpp main.cpp:2:23:致命错误:functions.h:文件或目录未找到 但是同样的错误即将到来 – sunny

0

这是一个纯粹的make错误消息。该错误与任何.cpp或.h文件的内容无关。这个错误实际上只能来自Makefile的内容,以及存在或不存在其中命名的文件。

根据此错误消息,make指出它无法找到文件include/functions.h。仔细检查它实际上是在这里,正确的名称和匹配的情况。

为了调试目的,你可以将下列行添加到您的Makefile:

./include/functions.h: 
    touch [email protected] 

它会指示make来创建一个空的包括/ functions.h文件,如果缺少。

相关问题