Пытаясь написать общий Makefile, я получаю неявный поиск правил, который не был выполнен

#makefile

#makefile

Вопрос:

Привет, я пытаюсь написать общий (базовый) Makefile для компиляции базовых, практических программ на c. У меня есть каталог src, в котором я практикуюсь в программировании на c. Моя структура каталогов выглядит примерно так:

 practice/src/ex1.c
             ex2.c
             ex3.c
practice/build
  

мой Makefile выглядит следующим образом:

 blddir = ./build
srcdir = ./src

# RM="find $(blddir) -maxdepth 1 -executable -type f -name 'ex*' -delete"

CFLAGS=-Wall -g

$(csrc): %.c
   $(CC) -o $(blddir)/$@  $(srcdir)/$^ # all prereqs

clean:
   find $(blddir) -maxdepth 1 -executable -type f -name 'ex*' -delete

  

Когда я запускаю: make ex6 , меня приветствует : make: *** No rule to make target 'ex6'. Stop.
Когда я запускаю: make -p ex6 | less
… и поиск ex6 я вижу:

 .DEFAULT_GOAL := src/ex6.c

src/ex6.c: %.c
#  Implicit rule search has not been done.
#  Modification time never checked.
#  File has not been updated.
#  recipe to execute (from 'Makefile', line 15):
    $(CC) -o $(blddir)/$@  $(srcdir)/$^ # all prereqs
  

Чего мне не хватает?

Спасибо!

…больше чтения, больше тестирования, новый (er) Makefile:

 blddir = ./build
srcdir = ./src

CFLAGS=-Wall -g

% : $(srcdir)/%.c
   $(CC) -o $(blddir)/$@  $^ # all prereqs

  

сделайте ex6
… и это работает

Комментарии:

1. Пожалуйста, проверьте Makefile: он не содержит определения для csrc