为什么即使我刚编译源代码,我的makefile也会重新编译?

bat*_*man 0 c makefile

我有一个简单的makefile,它p.c使用gccLinux在Linux上编译文件.该p.c文件取决于a.h文件.我的makefile看起来像这样:

//makefile
CC = gcc

build: p.c a.h
    $(CC) -o out p.c
clean:
    rm -f *.exe
rebuild: clean build
Run Code Online (Sandbox Code Playgroud)

Max*_*kin 6

你的Makefile不会产生它有望产生,即文件build,cleanrebuild.由于这些目标不是文件,因此应将其标记为虚假目标:

.PHONY: build clean rebuild
Run Code Online (Sandbox Code Playgroud)

build 目标应该是:

build : out

out : p.c a.h
    $(CC) -o $@ p.c
Run Code Online (Sandbox Code Playgroud)