Makefile 一个目标相当于多个目标

Makefile 一个目标相当于多个目标,makefile,Makefile,在一个Makefile中是否可能有一个与其他几个目标等效的目标,而不明确列出它们?比如: all: task-* task-name1: do something task-name2: do something else ... task-name(a big number): do yet something else 这些任务可能非常不同,并且是一个接一个地指定的,但是我只想通过键入make来完成它们。由于名称中没有系统分类,因此保留所有目标的显式列表是很乏味的

在一个Makefile中是否可能有一个与其他几个目标等效的目标,而不明确列出它们?比如:

all: task-*

task-name1:
    do something
task-name2:
    do something else
...
task-name(a big number):
    do yet something else

这些任务可能非常不同,并且是一个接一个地指定的,但是我只想通过键入make来完成它们。由于名称中没有系统分类,因此保留所有目标的显式列表是很乏味的

make本身没有类似的功能

如果您愿意遵守一些命名约定,您可以自己搜索makefile,如下所示:

ALL_TASKS := $(sort $(shell sed -n 's/^ *\(task-[^:]*\):.*/\1/p' Makefile))

all: $(ALL_TASKS)