2013-10-21 61 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文件,如果缺少。

相關問題