(GNU Make 4.4.1 - Built for x86_64-redhat-linux-gnu)

Consider the following trivial contrived makefile:

.PHONY: clean
count_words: lexer.o
        gcc lexer.o -o count_words -lfl
lexer.o: lexer.c
        gcc -c lexer.c
lexer.c: lexer.l
        flex -t lexer.l > lexer.c

clean:
        rm -f *.o lexer.c count_words


There is no lexer.l file in the current directory.

Running make results in the following error message:

make: *** No rule to make target 'lexer.l', needed by 'lexer.c'.  Stop.

Shouldn't this be

make: *** No rule to make prerequisite 'lexer.l', needed by 'lexer.c'. Stop.

After all, lexer.l appears as a prerequisite in the rule for lexer.c.
lexer.l doesn't appear as a target anywhere.

This is a very trivial matter.

Cordially,
Jon Forrest





Reply via email to