繁体   English   中英

Makefile 不编译当前更改。c 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM