我有一个包含所有目标和伪造目标的大makefile,现在我想更改它在文件中的位置,即不是在文件开头。
这是正常的
all: tdir execute build run
tdir:
@mkdir -p "$(DIR)"
DIR := $(CURDIR)
m := $(shell ftr build)
m := $(subst ],,$(subst [,,$(m)))
execute:
echo test
如果我这样改变所有人的位置,将无法正常工作
tdir:
@mkdir -p "$(DIR)"
DIR := $(CURDIR)
m := $(shell ftr build)
m := $(subst ],,$(subst [,,$(m)))
all: tdir execute build run
execute:
echo test
我知道我已经tdir
,Make是否可以为此类问题提供解决方案?
假设我要将all
移到底部
答案 0 :(得分:0)
如果您运行make
并没有在命令行上传递任何目标,则默认情况下
它使makefile中的第一个目标。来自the manual
9.2指定目标的参数
...
默认情况下,目标是makefile中的第一个目标(不计算以句点开头的目标)。 因此,通常将makefile编写为使第一个目标是编译它们描述的整个程序。
...
您可以使用.DEFAULT_GOAL变量(请参阅其他特殊变量)从makefile中管理对默认目标的选择。
makefile的作者通常将第一个(默认)目标称为all
,
但不总是。有时它称为default
或其他名称。使
对all
没有特殊意义。
如手册所述,您可以通过设置特殊的.DEFAULT_GOAL
变量来明确选择默认目标。所以
.DEFAULT_GOAL := all
tdir:
...
all: tdir execute build run
...
将按照您想要的方式运行。但是如果没有.DEFAULT_GOAL := all
,
默认目标是tdir
,如果您想创建all
,则必须指定
命令行上的目标:
$ make all
.DEFAULT_GOAL
很少使用。通常,人们首先写默认目标
在生成文件中,并将其命名为all
。