Кошмар, связанный с makefile - PullRequest
       0

Кошмар, связанный с makefile

2 голосов
/ 05 февраля 2012

Если я пытаюсь make all, я получаю:

make: ***No rule to make target 'src\SOURCES', needed by 'all'. Stop.

Если я пытаюсь make qwark, я получаю:

make: ***No rule to make target 'obj\src\SOURCES' needed by 'qwark'. Stop.

Если я пытаюсь make qwark.o, я получаю

Fatal error: can't create obj\qwark.o: No such file or directory
make: *** [qwark.o] Error 1

Вот мой исходный код, для вашего удовольствия от просмотра ...

COMPILER := g++
CFLAGS := 
LDFLAGS := 
SOURCES := quark.cc
SOURCES := $(addprefix src\,SOURCES)
OBJECTS := $(addprefix obj\,$($(notdir SOURCES):.cc=.o))
EXECUTABLE := qwark.exe
DEBUG := bin\debug\$(EXECUTABLE)
NORMAL := bin\release\$(EXECUTABLE)

all: $(SOURCES) $(EXECUTABLE)

release: qwark
normal: qwark

qwark: $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

qwark.o: src\qwark.cc
    $(CC) $(CFLAGS) -c src\qwark.cc -o obj\qwark.o

%.o: src\%.cc
    $(CC) $(CFLAGS) -c $(input) -o obj\$(output)

Пожалуйста, кто-нибудь, скажите мне, что я делаю неправильно ..........

Ответы [ 2 ]

4 голосов
/ 06 февраля 2012

Вы изменяете буквальное слово SOURCES вместо соответствующего значения переменной. Попробуйте следующее:

SOURCES := quark.cc

SOURCES := $(addprefix src\,$(SOURCES))
OBJECTS := $(addprefix obj\,$(patsubst %.cc,%.o,$(notdir $(SOURCES))))

Или, намного проще:

SOURCES := quark.cc

OBJECTS := $(SOURCES:%.cc=obj\%.o)
SOURCES := $(SOURCES:%=src\%)
2 голосов
/ 05 февраля 2012

Развернуть переменную SOURCES, когда она находится в правой части?

SOURCES := $(addprefix src\,$(SOURCES))
OBJECTS := $(addprefix obj\,$($(notdir $(SOURCES)):.cc=.o))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...