'%'

时间:2016-03-22 14:29:43

标签: makefile

我编写了一个简单的makefile,它将所有.txt文件从/ src复制到/ dest目录。但它不起作用。

我猜问题是'%',但我找不到它。你能救我吗?

Makefile:

all:dest/%.txt

dest/%.txt: src/%.txt
    @[ -d dest ] || mkdir dest
    cp $< $@

错误信息: make:***没有规则使目标dest/%.txt', needed by全部'。停止。

===============================

感谢所有答案!现在我明白了makefile的作用。如果我将第一行修改为“all:dest / a.txt”,同时在src /目录中有一个.txt。它只会将src / a.txt复制到dest / a.txt,而不是复制src /中的所有文件。

2 个答案:

答案 0 :(得分:0)

你不需要通配符。

all:
     cp src/*.txt dest/ 

答案 1 :(得分:0)

您可以将%表示法与通用配方一起使用,例如将C文件编译为目标文件的规则。

您无法在像您尝试的目标中使用它。

考虑.txt目录中没有dest个文件的情况。没有什么可以告诉make它应该将哪些文件复制到目录中。

我倾向于使用老式make,而我不会在makefile中使用通配符。因此,我在目录中列出我想要的文件并编写条件复制规则。