Проблема с Makefile. Второй набор глаз, пожалуйста - PullRequest
0 голосов
/ 17 марта 2012
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 $@

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 $@


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

Когда я закомментирую явное правило для MapFile.o, я получаю «правило для исключения ошибки», но неявное правило явно работает для Exception.o.Есть идеи, в чем может быть проблема?Надеюсь, это не что-то простое, что я скучаю по тому, как я смотрел на него несколько раз.Заранее спасибо.

Использование GNU Make 3.81

1 Ответ

2 голосов
/ 17 марта 2012

Имена файлов чувствительны к регистру;в некоторых местах у вас есть MapFile.cpp и MapFile.h, но в других местах у вас есть MapFIle.o (с большой буквы I) и MapFIle.cpp и т. д.

...