Я написал простой, полу-общий, Makefile
, чтобы скомпилировать простой проект C, однако он случайно перезаписывает себя. Это выход вызова make
:Makefile переписывает себя
clang -g -O0 -march=native -Wall -Wextra -ansi -pedantic -c appley.c -o Makefile.o
clang Makefile.o -o Makefile
rm Makefile.o
Makefile:1: warning: NUL character seen; rest of line ignored
Makefile:1: *** missing separator. Stop.
Это Makefile:
CC ?= gcc
DEBUG ?= -g -O0 -march=native
CFLAGS := $(CFLAGS) $(DEBUG) -Wall -Wextra -ansi -pedantic
LDFLAGS := $(LDFLAGS)
LDLIBS := $(LDLIBS)
SRC := appley.c
OBJ := $(SRC:.c=.o)
SYM := $(SRC:.c=.o.dSYM)
BIN := appley
PREFIX ?= /usr/local
BINDIR := $(PREFIX)/bin
.PHONY: clean all
all: $(BIN)
$(BIN): $(OBJ)
$(CC) $(LDFLAGS) $(LDLIBS) $(OBJ) -o $(BIN)
%.o: $(SRC)
$(CC) $(CFLAGS) -c $< -o [email protected]
install: $(BIN)
install -d $(BINDIR)
install $(BIN) $(BINDIR)
clean:
rm -rf $(OBJ) $(BIN)
Как стать [email protected]
Makefile.o
? А также, как может $(BIN)
стать Makefile
?
Я считаю, что это подстановочный знак, так как без него он работает нормально.
Редактировать: Это не шаблон, он сохраняет исходный файл в VIM на другой панели TMUX. Компиляция после этого сворачивает make-файл. Я официально смущен.
Makefile, вы обеспечиваете не имеет ошибки и не может произвести вывод вы показали здесь. Итак, ясно, что когда вы «_распределили ненужные части», вы фактически удалили часть make-файла, который вызывает вашу ошибку ... это означает, что мы не можем помочь вам решить вашу проблему. – MadScientist
@MadScientist Нет, я могу воспроизвести его с помощью этого make-файла. Но вы правы, ответ ниже - это не вся правда, я упустил что-то. – Ctx
Добавлен полный make-файл. – Leandros