C `makefile`未按预期工作
当我运行C `makefile`未按预期工作,c,makefile,C,Makefile,当我运行make时,如何使它: 创建prog.s,如果prog.s和prog不存在,则创建prog 如果prog.s比prog.c新(例如手动修改prog.s后),则创建prog.s) prog.s如果prog.c比prog新,则创建prog 换句话说,如果依赖项已被修改,则让make创建生成prog所需的文件 我的当前生成文件: CC = gcc CFLAGS = TARGET = prog all: $(TARGET).s $(TARGET).c $(TARGET).c: $(TA
make
时,如何使它:- 创建
,如果prog.s
和prog.s
不存在,则创建prog
prog
- 如果
比prog.s
新(例如手动修改prog.c
后),则创建prog.s
)prog.s
如果prog.s
比prog.c
新,则创建prog
prog
make
创建生成prog
所需的文件
我的当前生成文件:
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 do'all.
)您可以按相反的顺序定义您的目标:源代码。例如,汇编代码取决于C代码,您必须编写:
$(TARGET).s: $(TARGET).c
但是,您写了(错误的顺序)
以下是“目标:来源”的顺序正确的版本:
$(TARGET).c: $(TARGET).s
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