2015-11-28 2 views
0
#----------------------------------------------------------------------- ------ 
# Choose a compiler & its options 
#-------------------------------------------------------------------------- 

CC = gcc 
OPTS = -W -O3 

#-------------------------------------------------------------------------- 
# Add the debug flag to compile for use by a debugger 
#-------------------------------------------------------------------------- 
#DEBUG=-g 

#-------------------------------------------------------------------------- 
# Add the names of the directories 
#-------------------------------------------------------------------------- 
SRCDIR= src 
OBJDIR= obj 
INCDIR= include 
BINDIR= bin 

#-------------------------------------------------------------------- 
# Add the rest of the source files. Don't forget to add the '\' character 
# to continue the line. You don't need it after the last source file 
#-------------------------------------------------------------------- 
SRCS=$(SRCDIR)/Lab12.c \ Function1.c \ Function2.c \ Function3.c \         Function4.c \   Function5.c 

#-------------------------------------------------------------------- 
# You don't need to edit the next few lines. They define other flags 
# used in the compilation of the source code 
#-------------------------------------------------------------------- 
INCLUDE = $(addprefix -I,$(INCDIR)) 
OBJS=${SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o} 
CFLAGS = $(OPTS) $(INCLUDE) $(DEBUG) 

#-------------------------------------------------------------------- 
# Add the name of the executable after the $(BINDIR)/ 
#-------------------------------------------------------------------- 
TARGET = $(BINDIR)/ Lab12 

all: $(TARGET) 

$(TARGET): $(OBJS) 
    ${CC} ${CFLAGS} -o [email protected] $(OBJS) 

$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

clean: 
    rm -f $(OBJS) 

cleanall: 
    rm -f $(OBJS) 
    rm -f Lab12 

#-------------------------------------------------------------------- 
# Add a target named cleanall that will remove the object files as well 
# as the executable 
#-------------------------------------------------------------------- 

У меня есть все мои «заголовочные» файлы в папке include. У меня есть весь исходный код в папке src (Lab12.c, Function1.c, Function2.c ...). Я продолжаю получать эту ошибку, когда я использую команду make.вопросов с Makefile в C

Makefile: 45: мишень Function1.c' doesn't match the target pattern Makefile:45: target Function2.c 'не совпадает с шаблоном цели Makefile: 45: целевой Function3.c' doesn't match the target pattern Makefile:45: target Function4.c' не совпадает с шаблоном цели Makefile: 45: мишень `Function5.c» не соответствует шаблону цели НКУ -W -O3 -Iinclude -c -o Function1.c НКУ: ввод данных не файлы делают: *** [Function1.c] Ошибка 1

Я наклоняю достаточно выяснить, почему он ведет себя таким образом. Все эти файлы находятся в папке с кодом src, поэтому почему система не распознает их?

+0

Кажется, что проблема с форматированием в моем сообщении. В исходном файле Makefile. Function4.c и Function5.c. –

+0

В противном случае, чтобы вставить линии вместе, обратная косая черта должна быть последним символом на линии; не должно быть никакого другого символа, даже пробела между обратным слэшем и концом строки. Вы можете поместить различные объекты на одну строку, но тогда вам не нужно разделить их на обратную косую черту. –

+1

Если 'Function1.c' и т. Д. Находятся в' $ (SRCDIR) ', вы должны также добавить каталог к ​​этим файлам. (Или вы не укажете '$ (SRCDIR)' ни с одним из файлов и позже сделаете замену шаблона.) –

ответ

4
SRCS=$(SRCDIR)/Lab12.c \ Function1.c \ Function2.c \ Function3.c \ 

кажется неправильным; вы должны попробовать

SRCS=$(SRCDIR)/Lab12.c Function1.c Function2.c Function3.c 

вместо

UPDATE

Если Function1.c и так далее в '$ (SRCDIR) `, вы должны указать директорию для этих файлов тоже. (комментарий от M Oehm)

+0

Или поместите их на выделенные строки, каждый из которых - за исключением последнего символа с обратной косой чертой –

+0

Я изменил строку с предложениями, сделанными в этом посте. Тем не менее, я все еще получаю сообщение об ошибке. Что именно вы имеете в виду при добавлении каталога? –

+0

SRCS = $ (SRCDIR) /Lab12.c $ (SRCDIR) /Function1.c $ (SRCDIR) /Function2.c $ (SRCDIR) /Function3.c – OznOg

Смежные вопросы