Ако се опитам make all
, Взимам:
make: ***No rule to make target "srcSOURCES", needed by "all". Stop.
Ако се опитам make qwark
, Взимам:
make: ***No rule to make target "objsrcSOURCES" needed by "qwark". Stop.
Ако се опитам make qwark.o
, Взимам
Fatal error: can"t create objqwark.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 := bindebug$(EXECUTABLE)
NORMAL := binrelease$(EXECUTABLE)
all: $(SOURCES) $(EXECUTABLE)
release: qwark
normal: qwark
qwark: $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
qwark.o: srcqwark.cc
$(CC) $(CFLAGS) -c srcqwark.cc -o objqwark.o
%.o: src%.cc
$(CC) $(CFLAGS) -c $(input) -o obj$(output)
Моля те, някой, кажи ми какво правя аз грешно ..........
Отговори:
4 за отговор № 1Вие променяте литерала 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 за отговор № 2
Разширете променливата SOURCES, когато е на rhs?
SOURCES := $(addprefix src,$(SOURCES))
OBJECTS := $(addprefix obj,$($(notdir $(SOURCES)):.cc=.o))