Makefile:是否可以有带斜杠的词干?

标签 makefile

我有这些文件:

 tests/prova.txt
 tests/mydir/prova.txt

在我的Makefile中,我有一个用于打印文件路径的目标(这只是一个示例):

checkf-%:
    echo tests/${@:checkf-%=%}.txt

如果我打电话

make checkf-prova

它有效! 但如果我打电话

make checkf-mydir/prova

我明白了

ma​​ke:没有规则可以创建目标

如何使用 % 中的斜杠调用目标?

最佳答案

词干(% 符号)仅匹配有效的文件名字符,因此不会匹配其中包含/的字符串。话虽如此,模式规则会在尝试匹配之前删除目录名称,然后在运行配方时重新插入它们,因此:

p%.txt :
    @echo p\%.txt matches $@

将与:

~/tmp> make tests/prova.txt
p%.txt matches tests/prova.txt

(请注意,这是特定于模式规则的。test/prova.txt 不会匹配 prova.txt 目标,但会匹配 p%.txt 目标)。请参阅http://www.gnu.org/software/make/manual/html_node/Pattern-Match.html#Pattern-Match了解更多详情。

关于Makefile:是否可以有带斜杠的词干?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182990/

相关文章:

c - Linux/生成文件 : Creating a binary that executes as if it were in a specific directory

c++ - 条件编译

c++ - 使用 make 和 gcc 编译和链接来自不同目录的源代码

c - Makefile 覆盖自身

cuda - 检查 makefile 中 nvcc 是否可用

linux - 我如何找到 AM_MAKEFLAGS 的值?

c++ - 使用多个目录构建 Makefile

c++ - 制作 vtkOBJWriter 时遇到问题

c - 这个make文件有什么问题?

makefile - 递归调用的 make 中的错误不会停止调用 make