我有一个目录,其中包含两个文件夹src
和bin
,其根目录下的makefile。即使没有更改,此makefile也会继续编译(不是最新的)。我错过了这个makefile的东西吗?
all:
make a b
a: ./src/a.cpp
g++ -o ./bin/a ./src/a.cpp
b: ./src/b.cpp
g++ -o ./bin/b ./src/b.cpp
答案 0 :(得分:5)
您的规则声称要创建文件a
和b
,但他们不会:他们创建bin/a
和bin/b
。
因此,当make
检查您的规则时,它始终会发现a
和b
不存在,并尝试通过执行相关命令来创建它们。
可能的解决方法:
.PHONY: all
all: bin/a bin/b
bin/a: src/a.cpp
g++ -o bin/a src/a.cpp
bin/b: src/b.cpp
g++ -o bin/b src/b.cpp
在.PHONY
:https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets