1. ホーム
  2. makefile

[解決済み] Makefile のターゲットとしてグロブパターンを指定する

2022-02-15 03:06:53

質問

私の make macOS High Sierra Version 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

私のカレントディレクトリはこんな感じです。

$ ls -1
Makefile
a.txt
b.txt
c.txt

私の Makefile はこのようになります。

*.txt: FORCE
        echo Target $@ invoked

FORCE:

私は、この 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

のこの動作はどこにあるのでしょうか? *.txt は、カレントディレクトリにあるマッチするターゲットに展開することが文書化されていますか?manページやドキュメントを検索してみましたが、ターゲットとしてglobパターンを使用できることを明記しているものは見つかりませんでした。この挙動を Makefile s?

どのように解決するのですか?

をご覧ください。 GNU makeマニュアル の右側、ルールシンタックスの導入部にあります。

ターゲットは、スペースで区切られたファイル名です。ワイルドカード文字を使用することもできます(ファイル名にワイルドカード文字を使用するを参照)。

とセクション全体 ファイル名にワイルドカード文字を使用する .

man ページを見るだけではだめです。man ページはコマンドラインインタフェースを説明し、makefile の構文の最小限の要約を可能にしているだけです。 それらは makefile の書き方のすべてを説明しようとはしていません。

もし GNU make マニュアルを見たけれどもこれが見つからなかったのなら、 何を探してどこにその情報を期待したのかを理解し、 ドキュメントの改良を考えることができればと思います。