#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