makefile 中的规则顺序很重要吗?
Order of rules in makefile matters?
我的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
以上两种方法都有效。
我假设你的 make 工具是 GNU Make。
除非您在命令行中指定目标,例如:
make File
make
将默认尝试创建第一个目标
在 makefile 中,在您的问题案例中是 File.o
。
参见 How make Processes a Makefile
当您添加:
all: File
在最上面,all
是第一个目标,依赖于File
,
这又取决于 File.o
.
我建议您将其替换为:
.PHONY: all
all: File
我的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
以上两种方法都有效。
我假设你的 make 工具是 GNU Make。
除非您在命令行中指定目标,例如:
make File
make
将默认尝试创建第一个目标
在 makefile 中,在您的问题案例中是 File.o
。
参见 How make Processes a Makefile
当您添加:
all: File
在最上面,all
是第一个目标,依赖于File
,
这又取决于 File.o
.
我建议您将其替换为:
.PHONY: all
all: File