У меня есть Makefile, который не работает каждый раз, когда я его запускаю.Я изменил Makefile, который компилирует кучу файлов в каталог, который нужно сделать, если его еще нет.all:
терпит неудачу, и я, честно говоря, понятия не имею, почему это происходит.
Вот как выглядит мой Makefile:
CC=gcc
SRCDIR=src
INCDIR=include
BINDIR=../bin
CFLAGS = -flags
LIBS = -llibrary1 -llibrary2
all:
$(BINDIR) \
$(BINDIR)/program1 \
$(BINDIR)/program2 \
$(BINDIR)/program3
$(BINDIR)/program1: $(SRCDIR)/program1.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR)/program2: $(SRCDIR)/program2.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR)/program3: $(SRCDIR)/program3.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR):
mkdir -p $@
clean:
rm -f $(BINDIR)/*
Я знаю, что проблема связана с $(BINDIR)
, но я не могу понять, что делать.Последний вопрос, который я задал по StackOverflow, дал мне некоторые ресурсы (например, документацию GNU здесь ).Насколько я понимаю, $(BINDIR)
должен быть сделан первым, когда я запускаю make, а затем остальные правила должны выполняться без каких-либо проблем.
Вот полученная мной ошибка, которая, как я знаю, означает, что $(BINDIR)
не создается до выполнения остальных правил.
user@user-Notebook:~/project/folder$ make
../bin \
../bin/program1 \
../bin/program2 \
../bin/program3
make: ../bin: Command not found
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 127
Чего мне не хватает?