我有一个很大的makefile,里面有all和file target,现在我想改变它在文件中的位置,即不是在文件的开头
这是有效的
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移到底部
发布于 2018-09-26 15:42:23
如果您运行make时没有在命令行上传递目标,那么在默认情况下,它将成为makefile中的第一个目标。来自the manual
用于指定目标的
9.2参数
..。
默认情况下,目标是makefile中的第一个目标(不包括以句点开头的目标)。因此,makefile通常是这样编写的,即第一个目标是编译它们所描述的整个程序。
..。
您可以使用.DEFAULT_GOAL变量从makefile中管理默认目标的选择(请参见其他特殊变量)。
makefiles的作者通常将第一个(默认)目标称为all,但并不总是这样。有时它被称为default,或者其他什么东西。Make对all没有特别的意义。
正如手册所述,您可以通过设置特殊的.DEFAULT_GOAL变量来显式地选择默认目标。所以
.DEFAULT_GOAL := all
tdir:
...
all: tdir execute build run
...都会按照你想要的方式运行。但是在没有.DEFAULT_GOAL := all的情况下,默认目标是tdir,如果您希望生成all,则必须在命令行上指定该目标:
$ make all.DEFAULT_GOAL很少使用。通常,人们首先在makefile中编写默认目标,并将其称为all。
https://stackoverflow.com/questions/52511337
复制相似问题