找到并行gnu-make的作业编号

时间:2017-05-03 09:46:22

标签: gnu-make

使用-j运行make时,是否可以找到正在运行的作业的编号?

例如使用Makefile:

SUBDIRS = a b c

default: all

$(SUBDIRS)::
    $(MAKE) -C $@ $(MAKECMDGOALS)

all clean : $(SUBDIRS)

如果我运行make -j4,我可以回复一些不同的变量吗?

该号码是否可用?

1 个答案:

答案 0 :(得分:0)

在此Makefile上运行$ make ...

.PHONY: all clean

files := a b c

all: $(files)

$(files): clean
    @echo "Creating file: $@, Unique Job ID: $${$$}"
    @touch $@

clean:
    @rm -f $(files)

在这种情况下,您的唯一职位编号为$${$$}。由于美元符号必须以美元符号进行转义,因此这相当于Bash's $$ Process ID Internal Variable。为了进一步说明,Bash中的变量$foo${foo}分别在Make中为$$foo$${foo}