【问题标题】:Expanding directories in variables with make使用 make 扩展变量中的目录
【发布时间】:2015-05-11 14:39:24
【问题描述】:

我有一个项目的生成文件(如下),其中我获得了一个“原始数据”文件夹 - 来自一位同事的一组文件,我制作了一个 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 理解路径名中的引号字符串或空格;它来自较老的时代,当时人们没有这样做,因为当您尝试在目录中包含空格时会受到伤害。错误消息与该观察结果一致。

标签: r bash variables path makefile


【解决方案1】:

make 通常不支持路径名中的空格。至少GNU make 中的一些函数可以处理被\ 转义的空格。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多