[英]Makefile does not compile the current changes .c file
我正在为我的程序编写 makefile,但是每当我在我的密码中进行操作时,它都不会显示在.c 文件中所做的最新更改。 我做错了什么?
web : mweb.o
gcc -o bin/web bin/web.o
mweb.o : src/web.c
gcc -c -std=c99 -Wall src/web.c -o bin/web.o
clean:
rm -f web
您的 makefile 规则创建与您在规则中提供的目标的路径名不同的文件总是错误的。 所以:
<target>: ...
<command>
<command>
必须创建由<target>
命名的文件。
在这里,第一条规则中的<target>
是web
,但是您提供的编译命令会创建文件bin/web
。 您在第二条规则上的<target>
是mweb.o
但编译命令会创建文件bin/web.o
。
那是行不通的。
最好的办法是使用 make 的$@
自动变量:这些是由 make 设置的,并且总是包含 make 期望你创建的文件。
CFLAGS = -std=c99 -Wall
bin/web : bin/mweb.o
$(CC) $(CFLAGS) -o $@ $^
bin/mweb.o : src/web.c
$(CC) -c $(CFLAGS) $< -o $@
clean:
rm -f web
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.