Makefile $(eval ...):多个作业同时运行时的行为是什么?

Makefile $(eval ...):多个作业同时运行时的行为是什么?

问题描述:

我已经定义了以下规则:

$(OUTDIR)/%_sorted.bam: 
    $(eval SAMPLE:=$(subst _sorted,,$(notdir $(basename [email protected])))) 
    (...) do something with $(SAMPLE) 

我可以用它安全地(?=是一个“局部变量”的规则)与

make -j (number of jobs) 

或不变量$( SAMPLE)将被替换为每个(同时)调用规则?

是的,你可以。 GNU make在执行之前扩展了整个配方。作业服务器模式只影响由make产生的子进程的执行,其他的都是单线程的。