2

マークダウン テキスト ファイルからドキュメントを作成するための GNU make 用の makefile があります。INPUTメイクファイルには、マークダウン ファイルのファイル名に設定したい変数があります。すべてのマークダウン ファイルは、パターン *.md に従います。

ただし、パターンに一致するファイルが1つINPUTしかない場合はファイル名のみに設定したいのですが、マークダウンファイルが複数ある場合、makeはエラーで終了するはずです。

私は当然の選択を試みた

INPUT ?= *.md

しかし、これはもちろん INPUT を **all* 一致のリストに設定します。したがって、たとえば、のみを含むディレクトリでは正しく機能しますがfile_a.md

file_a.md
file_b.md

INPUTこれは、INPUT が1 つのファイルfile_a.md file_b.mdを含むか、終了することを期待するルールを台無しにします。

INPUTmakefile構文で好きなように割り当てる方法はありますか?

4

1 に答える 1

3

必要なことを行うには、$(wildcard)関数を使用して強制的にグロブをすぐに実行する必要があります (そうしないと、変数が適切な場所で使用されるまで make はグロブを展開する前に待機します)。

INPUT ?= $(wildcard *.md)

ifneq (1,$(words $(INPUT)))
    $(error Too many or two few input files found.)
endif
于 2015-03-30T23:22:35.840 に答える