我有一個包含大量的文件和目錄下面的文件和目錄結構:合併文件的makefile導致不作任何目標
$ tree
input/
├── C-1-28558666
│ ├── MGRF-C1_S10_L001_R1_001.fastq.gz
│ ├── MGRF-C1_S10_L001_R2_001.fastq.gz
│ ├── MGRF-C1_S10_L002_R1_001.fastq.gz
│ ├── MGRF-C1_S10_L002_R2_001.fastq.gz
│ ├── MGRF-C1_S10_L003_R1_001.fastq.gz
│ ├── MGRF-C1_S10_L003_R2_001.fastq.gz
│ ├── MGRF-C1_S10_L004_R1_001.fastq.gz
│ └── MGRF-C1_S10_L004_R2_001.fastq.gz
├── C-2-28577664
│ ├── MGRF-C2_S11_L001_R1_001.fastq.gz
│ ├── MGRF-C2_S11_L001_R2_001.fastq.gz
│ ├── MGRF-C2_S11_L002_R1_001.fastq.gz
│ ├── MGRF-C2_S11_L002_R2_001.fastq.gz
│ ├── MGRF-C2_S11_L003_R1_001.fastq.gz
│ ├── MGRF-C2_S11_L003_R2_001.fastq.gz
│ ├── MGRF-C2_S11_L004_R1_001.fastq.gz
│ └── MGRF-C2_S11_L004_R2_001.fastq.gz
...
每個文件名包含R1或R2。 R1和R2的文件屬於一起,下面的commanand使用這兩個文件和一個dm6.fasta.bwt文件。
bwa mem ref/dm6.fasta.bwt input/C-1-28558666/MGRF-C1_S10_L001_R1_001.fastq.gz input/C-1-28558666/MGRF-C1_S10_L001_R2_001.fastq.gz | samtools view -Sb - > BAMs/C-1-28558666/MGRF-C1_S10_L001.bam
我試圖寫下面的Makefile規則:
BAMs/%.bam: $(addsuffix .bwt,${REFERENCE}) $(foreach SIDE,R1 R2, ../MGRF_NGS_KUMARAN-25071046/*/*${SIDE}*.fq.gz)
bwa mem ${REFERENCE} $(filter %.fq.gz,$^) | samtools view -Sb - > @>
不過,我有:
$ make -n
make: *** No targets. Stop.
怎麼可能解決上述的Makefile?
是,你還沒有告訴做出實際上構建任何文件。你剛剛給它一個模式來匹配目標文件名。這就是說,makefile目標/等。根本不會做你想做的事情。 –
我剛從第一條規則開始。我如何告訴上面的例子來構建文件? – user977828
你需要實際告訴make來構建目標:例如'make BAMs/file.bam'或者在你的makefile中有'all:BAMs/file.bam BAMs/otherfile.bam ...'這樣的目標,所以make有一個默認。但就像我說你的目標規則有一個*主機*的其他問題。 –