我正在尝试使用 make 来处理一些数据处理。
在生成文件中考虑以下简单规则makefile-month
output_$(YEAR)_$(MONTH): input_$(YEAR)_$(MONTH)
foo input_$(YEAR)_$(MONTH) output_$(YEAR)_$(MONTH)
此规则可用于处理任何所需的月份,例如
make -f makefile-month YEAR=2006 MONTH=2
这很好用。
我现在真正感兴趣的是使用 make 来并行处理几个月。但是,我找不到实现这一目标的简单方法。
请注意,使用 shell for 循环不适用于并行 make。定义一个全局makefile,
all:
for year in 2006; do \
for month in 1 2 3 4 5 6 7 8 9 10 11 12; do \
$(MAKE) -f makefile-month YEAR=$$year MONTH=$$month; \
done; \
done
和跑步,
make -j 12
不会每个月并行执行。对 sub-make 的每次调用都是串行执行的。
有任何想法吗?