我的makefile
有两行:
Rule_1
File.o : File.cpp
g++ -c File.cpp -o File.o
Rule_2
File : File.o
g++ File.o -o File
我希望File.cpp
中的任何更改都会导致File.o
和File
的重生。这可以通过以下方式完成:
Makfile
:
Rule_2
Rule_1
但是以下内容不起作用,只能重新生成File.o
Rule_1
Rule_2
为什么呢?我注意到,我在makefile中没有使用任何all:
。使用all: File
上述两种方法都可以。
答案 0 :(得分:2)
我认为你的制作工具是GNU Make。
除非您在命令行上指定目标,例如:
make File
默认情况下, make
会尝试制作第一个目标
在makefile中,在你的问题例子中是File.o
。
见How make Processes a Makefile
添加:
all: File
在顶部,all
是第一个目标,取决于File
,
而这又取决于File.o
。
我建议你用以下代码替换:
.PHONY: all
all: File