2012-03-17 36 views
0
PROJ  =  . 
SRC_ROOT =  . 
FLAGS =  -g -Wall -Wextra 

INC  =  -I$(PROJ)        \ 
       -I$(SRC_ROOT)/Exception     \ 
       -I$(SRC_ROOT)/MapFile 

DEPS  =  $(SRC_ROOT)/Exception/Exception.h  \ 
       $(SRC_ROOT)/Exception/Exception.cpp  \ 
       $(SRC_ROOT)/MapFile/MapFile.h   \ 
       $(SRC_ROOT)/MapFile/MapFile.cpp 

OBJS  =  $(SRC_ROOT)/MapFile/MapFIle.o   \ 
       $(SRC_ROOT)/Exception/Exception.o 

all: main $(OBJS) 

%.o : %.cpp %.h 
     g++ -c $(FLAGS) $(INC) $< -o [email protected] 

main: $(DEPS) $(OBJS) main.cpp 
     g++ -o main $(FLAGS) $(INC) main.cpp $(OBJS) 

$(SRC_ROOT)/MapFile/MapFIle.o : $(SRC_ROOT)/MapFile/MapFIle.cpp $(SRC_ROOT)/MapFile/MapFIle.h 
     g++ -c $(FLAGS) $(INC) $< -o [email protected] 


clean: 
     rm -f *~ 
     rm -f $(OBJS) 
     rm -f main 
     rm -f -R *.dSYM 

當我註釋掉MapFile.o的顯式規則時,我得到了「沒有規則來爲它構建錯誤」,但隱式規則顯然適用於Exception.o。任何想法可能是什麼問題?希望這不是簡單的,我錯過了一些盯着它。提前致謝。Makefile問題。第二組眼睛請

使用GNU Make 3.81

回答

2

文件名區分大小寫;在一些地方你有MapFile.cppMapFile.h,但在其他地方有MapFIle.o(大寫I)和MapFIle.cpp等等。

+0

那就是它。我應該能夠自己抓住那個。我眼中的事情欺騙了我。謝謝你的第二套眼睛。 – 2012-03-17 03:05:03

+0

@GeraldStephanRunionII:任何時間。 :-) – ruakh 2012-03-17 03:06:01