首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改makefile文件中的所有目标位置

更改makefile文件中的所有目标位置
EN

Stack Overflow用户
提问于 2018-09-26 14:32:57
回答 1查看 283关注 0票数 1

我有一个很大的makefile,里面有all和file target,现在我想改变它在文件中的位置,即不是在文件的开头

这是有效的

代码语言:javascript
复制
all: tdir execute build run

tdir:
   @mkdir -p "$(DIR)"
   DIR  := $(CURDIR)

m := $(shell ftr build)
m := $(subst ],,$(subst [,,$(m)))
execute:
 echo test

如果我像这样改变所有的位置,它就不起作用了

代码语言:javascript
复制
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移到底部

EN

回答 1

Stack Overflow用户

发布于 2018-09-26 15:42:23

如果您运行make时没有在命令行上传递目标,那么在默认情况下,它将成为makefile中的第一个目标。来自the manual

用于指定目标的

9.2参数

..。

默认情况下,目标是makefile中的第一个目标(不包括以句点开头的目标)。因此,makefile通常是这样编写的,即第一个目标是编译它们所描述的整个程序。

..。

您可以使用.DEFAULT_GOAL变量从makefile中管理默认目标的选择(请参见其他特殊变量)。

makefiles的作者通常将第一个(默认)目标称为all,但并不总是这样。有时它被称为default,或者其他什么东西。Make对all没有特别的意义。

正如手册所述,您可以通过设置特殊的.DEFAULT_GOAL变量来显式地选择默认目标。所以

代码语言:javascript
复制
.DEFAULT_GOAL := all

tdir:
    ...


all: tdir execute build run
    ...

都会按照你想要的方式运行。但是在没有.DEFAULT_GOAL := all的情况下,默认目标是tdir,如果您希望生成all,则必须在命令行上指定该目标:

代码语言:javascript
复制
$ make all

.DEFAULT_GOAL很少使用。通常,人们首先在makefile中编写默认目标,并将其称为all

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52511337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档