Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gnu makefile如何从patsubst管理3个参数_Makefile_Gnu Make - Fatal编程技术网

gnu makefile如何从patsubst管理3个参数

gnu makefile如何从patsubst管理3个参数,makefile,gnu-make,Makefile,Gnu Make,我需要编写一个简单的makefile来启动一个程序。这个程序需要两个输入参数和一个输出,这取决于输入文件 我在RAW/directory上有所有输入。该文件的基本名称相同,但我需要两个文件R1和R2 RDIR=原始 OUTDIR=最终 RFILES:=$(通配符$(RDIR)/*\u R1\u 001.fastq.gz) OUTFILE=$(patsubst%\u R1\u 001.fastq.gz、%\u R2\u 001.fastq.gz、$(RFILES)) OUTKAL=$(patsub

我需要编写一个简单的makefile来启动一个程序。这个程序需要两个输入参数和一个输出,这取决于输入文件 我在RAW/directory上有所有输入。该文件的基本名称相同,但我需要两个文件R1和R2

RDIR=原始 OUTDIR=最终 RFILES:=$(通配符$(RDIR)/*\u R1\u 001.fastq.gz) OUTFILE=$(patsubst%\u R1\u 001.fastq.gz、%\u R2\u 001.fastq.gz、$(RFILES)) OUTKAL=$(patsubst$(RDIR)/%\u R1\u 001.fastq.gz,$(OUTDIR)/%,$(RFILES)) .冒牌货 全部:$(OUTFILE)$(RFILES)$(OUTDIR)$(OUTKAL) $(输出文件):$(R文件) -echo$FINAL/A -echo“工具-i”$”$@ $(OUTDIR): mkdir-p$(OUTDIR) 清洁:: $(RM)-rf$(OUTDIR) 做这样一个comand的简单方法是什么

`tools A_R1_001.fastq.gz -b "A_R2_001.fastq.gz" > FINAL/A` `工具A_R1_001.fastq.gz-b“A_R2_001.fastq.gz”>最终版/A` 那么如何组合此patsubst?

此:

$(OUTFILE): $(RFILES)
    ...
是错误的构造。它使所有输入文件成为每个输出文件的先决条件。此外,您似乎打算构建
FINAL/A
,但此规则告诉Make其目的是构建
RAW/A_R2_001.fastq.gz
,这将导致问题

我们需要的是:

FINAL/A: RAW/A_R1_001.fastq.gz $(OUTDIR)
    tools A_R1_001.fastq.gz -b "A_R2_001.fastq.gz" > FINAL/A
但对于所有输入文件,我们编写了一个

然后我们简化
all
规则:

all: $(OUTKAL)
我们完成了

FINAL/%: RAW/%_R1_001.fastq.gz $(OUTDIR)
    tools $*_R1_001.fastq.gz -b "$*_R2_001.fastq.gz" > $@
all: $(OUTKAL)