gpt4 book ai didi

c - Makefile 覆盖自身

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:06 25 4
gpt4 key购买 nike

我已经编写了一个简单的、半通用的 Makefile 来编译一个简单的 C 项目,但是,它会随机覆盖自己。这是调用 make 的输出:

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.

这是生成文件:

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 $@

install: $(BIN)
install -d $(BINDIR)
install $(BIN) $(BINDIR)

clean:
rm -rf $(OBJ) $(BIN)

$@如何变成Makefile.o?还有,$(BIN) 怎么变成Makefile
我相信这是通配符,因为没有它似乎工作正常。

Edit: 这不是通配符,它​​是将 VIM 中的源文件保存在另一个 TMUX 面板中。之后的编译会扰乱 makefile。我很困惑。

最佳答案

模式规则通常两边都有一个 %。尝试替换它,

%.o: $(SRC)

有了这个,

%.o: %.c

关于c - Makefile 覆盖自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34963737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com