문제

I'll say first I don't have as much experience which makefiles as I wished, this is actually my first. The error I currently get is:

Makefile:1: missing separator. Stop.

This happens when I try to run the make command.

As far as I know this means that I'm missing a hard tab at the first line it tries to run, I think at least.

I'm not missing a hard tab though as far as I know, so I'm assuming I'm just missing a whole line somewhere.

CFLAGS = -ansi -Wall -pedantic
HEADERS = menu.h file1.h file2.h file3.h file4.h
OBJECTS = menu.o file1.o file2.o file3.o file4.o
CC = gcc

all:runprog

runprog:$(OBJECTS)
        $(CC) $(OBJECTS) -o runprog

menu.o:menu.c $(HEADERS)
        $(CC) $(CFLAGS)

file1.o:file1.c $(HEADERS)
        $(CC) $(CFLAGS)

file2.o:file2.c $(HEADERS)
        $(CC) $(CFLAGS)

file3.o:file3.c $(HEADERS)
        $(CC) $(CFLAGS)

file4.o:file4.c $(HEADERS)
        $(CC) $(CFLAGS)

clean:rm -f *.o runprog
도움이 되었습니까?

해결책

The clean target has its code in the place of dependencies. Also, your code uses spaces instead of tabs. Additionally, you forgot to add the .c files to the CC command lines. Moreover, you can simplify all the rules to

CFLAGS = -ansi -Wall -pedantic
HEADERS = menu.h file1.h file2.h file3.h file4.h
OBJECTS = menu.o file1.o file2.o file3.o file4.o
CC = gcc

all:runprog

runprog:$(OBJECTS)
    $(CC) $(OBJECTS) -o runprog

%.o: %.c $(HEADERS)
    $(CC) -c -o $@ $< $(CFLAGS)

clean:
    rm -f *.o runprog
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top