指定 glob 模式作为 Makefile 目标

Lon*_*ner 4 makefile gnu-make

make在 macOS High Sierra 版本 10.13.6 上的版本如下所示:

$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
Run Code Online (Sandbox Code Playgroud)

我当前的目录如下所示:

$ ls -1
Makefile
a.txt
b.txt
c.txt
Run Code Online (Sandbox Code Playgroud)

我的Makefile看起来像这样:

*.txt: FORCE
        echo Target $@ invoked

FORCE:
Run Code Online (Sandbox Code Playgroud)

我可以Makefile这样使用它:

$ make a.txt
echo Target a.txt invoked
Target a.txt invoked
$ make b.txt
echo Target b.txt invoked
Target b.txt invoked
$ make c.txt
echo Target c.txt invoked
Target c.txt invoked
Run Code Online (Sandbox Code Playgroud)

*.txt这种扩展到当前目录中匹配目标的行为记录在哪里?我尝试搜索手册页和文档,但找不到任何指定我们可以使用全局模式作为目标的内容。我可以依赖我的这种行为Makefile吗?

Mad*_*ist 8

请参阅GNU make 手册中规则语法的介绍:

目标是文件名,以空格分隔。可以使用通配符(请参阅在文件名中使用通配符)

以及整个部分在文件名中使用通配符

您不能只查看手册页:手册页仅描述命令行界面以及可能的 makefile 语法的最简单摘要。他们并不试图描述有关如何编写 makefile 的所有内容。

如果您查看了 GNU make 手册但没有找到此内容,我有兴趣了解您搜索的内容以及您期望在哪里找到该信息,以便我们可以考虑改进文档。