如何运行make
:
prog.s
和prog
不存在,则创建prog.s
,然后创建prog
prog.s
比prog.s
更新,则会创建prog.c
(例如,在手动修改prog.s
后)prog.s
如果prog
比prog.c
prog
换句话说,如果依赖项已被修改,让make
创建构建prog
所需的文件
我当前的makefile:
CC = gcc
CFLAGS =
TARGET = prog
all: $(TARGET).s $(TARGET).c
$(TARGET).c: $(TARGET).s
$(CC) $(CFLAGS) $(TARGET).s -o $(TARGET)
$(TARGET).s:
$(CC) $(CFLAGS) -S -o $(TARGET).s $(TARGET).c
clean:
$(RM) $(TARGET)
$(RM) $(TARGET).s
如果我有:
prog.c
prog.s
但如果我手动修改了prog.c
,则无效
(make: Nothing to be done for 'all'.
)
答案 0 :(得分:3)
您可以按相反的顺序定义target: source
。例如,汇编代码取决于您的C代码,您必须写:
$(TARGET).s: $(TARGET).c
但是,你写了(错误的订单)
$(TARGET).c: $(TARGET).s
以下是“target:sources”的正确顺序的版本:
CC = gcc
CFLAGS =
TARGET = prog
all: $(TARGET)
$(TARGET): $(TARGET).s
$(CC) $(CFLAGS) $(TARGET).s -o $(TARGET)
$(TARGET).s: $(TARGET).c
$(CC) $(CFLAGS) -S -o $(TARGET).s $(TARGET).c
clean:
$(RM) $(TARGET)
$(RM) $(TARGET).s