У меня есть следующий файл и структуру директорий, которая содержит много файлов и каталогов:объединить файлы 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, то ваша проблема в том, что вы не сказали сделать, чтобы фактически создавать любые файлы. Вы только что дали ему шаблон для сопоставления целевых имен файлов. Это сказано, что makefile target/etc. совсем не собирается делать то, что вы хотите. –
Я только начал с первого правила. Как я могу описать приведенный выше пример для сборки файлов? – user977828
Вам нужно на самом деле сказать make для создания целей: 'make BAMs/file.bam', например, или иметь цель как' all: BAMs/file.bam BAMs/otherfile.bam ... 'в вашем make-файле, поэтому make имеет по умолчанию. Но, как я сказал, ваше целевое правило имеет * хост * других проблем. –