我正在尝试使用GNU make来自动化我的分析管道。我有一个脚本,它使用模式data / sub001 / sub001_input.txt读取文件并写入data / sub001 / sub001_output.txt。我怎样才能为每个主题编写一个符合此模式的规则?这是我到目前为止的尝试:
# List of all the subjects
SUBJECTS ?= sub001 sub002 sub003
/data/%/%_output.txt : process.py data/%/%_input.txt
python process.py $*
# for each $SUBJECT in $SUBJECTS
all : /data/$(SUBJECT)/$(SUBJECT)_output.txt
@echo 'Data analysis complete!'
我希望调用all
目标:
python process.py sub001
python process.py sub002
python process.py sub003
如果相应的sub###_input.txt
文件发生变化,我希望重新处理一个主题,如果process.py
文件发生变化,我希望重新处理所有主题。
答案 0 :(得分:2)
您不能在模式规则中使用多个模式字符。
你可以使用一个代表整个中间部分的单一图案,然后剥去你想要的部分:
/data/%_output.txt : process.py data/%_input.txt
python process.py $(*F)