makefile中的规则顺序很重要吗?

时间:2017-01-22 19:06:28

标签: makefile g++ rule

我的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.oFile的重生。这可以通过以下方式完成:

Makfile

Rule_2
Rule_1

但是以下内容不起作用,只能重新生成File.o

Rule_1
Rule_2

为什么呢?我注意到,我在makefile中没有使用任何all:。使用all: File上述两种方法都可以。

1 个答案:

答案 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

请参阅Phony targets