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产生的子进程的执行,其他的都是单线程的。