使用 make 扩展变量中的目录

Expanding directories in variables with make

我有一个项目的 makefile(如下),我在其中得到了一个文件夹 "Raw Data" - 一组来自同事的文件,并且我制作了一个 R 脚本来进行分析在其中一些文件上。我想用 makefile 做的是将目录分配给变量 RAWDIR,然后使用该变量指定 R 脚本的 make 依赖项,并将其作为脚本的命令行参数。通常在 shell 中,当使用双引号和大括号时,带空格的目录会被扩展,但我不知道这对于 make 文件是否也是正确的,就像下面的 makefile 一样,我得到消息 make: *** No rule to make target ""../Raw',pulls'. Stop. 需要所以我认为分配给 RAWDIR 的文件路径没有正确扩展。

谢谢。

RAWDIR="../Raw Data/Fc Project Raw Data"

.PHONY: dirs

pulls: dirs "${RAWDIR}/pm_fc_dnds_cleandata.csv" "${RAWDIR}/fc1_seqs.fasta" "${RAWDIR}/fc2_seqs.fasta" "${RAWDIR}/pm1_seqs.fasta" "${RAWDIR}/pm2_seqs.fasta"
    Rscript Allele_Pulling.R "${RAWDIR}/" "${RAWDIR}/pm_fc_dnds_cleandata.csv"

dirs: 
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/FC
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/PM
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/Both
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/FC1PM1
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/FC1PM2
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/FC2PM1
    mkdir -p -v Pulled_Allelic_Pairs/Unaligned/FC2PM2
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/FC
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/PM
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/Both
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/FC1PM1
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/FC1PM2
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/FC2PM1
    mkdir -p -v Pulled_Allelic_Pairs/Aligned/FC2PM2

通常 make 不能很好地支持路径名中的空格。至少 GNU make 中的某些函数可以处理由 \.

转义的空格

以下应该适用于您的用例:

RAWDIR="../Raw\ Data/Fc\ Project\ Raw\ Data"