Makefile GNU中带有两个%标记的规则make

Makefile GNU中带有两个%标记的规则make,makefile,gnu-make,Makefile,Gnu Make,我正在尝试使用GNUMake自动化我的分析管道。我有一个脚本,它读取模式为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

我正在尝试使用GNUMake自动化我的分析管道。我有一个脚本,它读取模式为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######u input.txt
文件更改,我希望重新处理单个主题,如果
process.py
文件更改,我希望所有主题都重新处理。

在模式规则中不能使用多个模式字符

您可以使用一个代表整个中间部分的图案,然后按如下方式剥离所需的零件:

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

不能在模式规则中使用多个模式字符

您可以使用一个代表整个中间部分的图案,然后按如下方式剥离所需的零件:

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