2017-08-22 36 views
0

我試圖用GNU make來自動化我的分析管道。我有一個腳本,它用模式data/sub001/sub001_input.txt讀取文件並寫入data/sub001/sub001_output.txt。我怎樣才能爲每個主題編寫一個符合這種模式的規則?這裏是我的嘗試至今:在GNU中產生兩個百分比的規則使

# 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文件更改,我希望所有主題都要重新處理。

回答

2

您不能在模式規則中使用多個模式字符。

您可以使用一個單一的模式,將代表整個中間部分,然後去掉你想這樣的部分:

/data/%_output.txt : process.py data/%_input.txt 
     python process.py $(*F)