1

複数のディレクトリに一致するターゲットを作成しようとしていますが、ファイルはありません。ターゲットをディレクトリとして明示的にフラグを立てる方法はありますか?

例えば:

output/%:
    mkdir -p $@

ファイルにも一致しますが、これは間違いなく私が望んでいることではありません。

基本的に、存在しない場合に作成する必要のあるディレクトリ名を含む多くの変数があります。これを行うための最良の方法は、私が見つけた限りでは次のとおりです。

all: directories other_stuff

directories: $(dir1) $(dir2) ...

$(dir1):
    mkdir -p $@
$(dir2):
    mkdir -p $@
...

したがって、ターゲットの依存関係としてディレクトリ変数を繰り返しても問題ありdirectoriesませんが、追加するディレクトリごとにターゲットを作成するのはやり過ぎで、維持するのが難しいようです。

4

1 に答える 1

1

1 つの可能性を次に示します。

DIR_LIST = $(dir1) $(dir2) $(dir3)

.PHONY: all
all: directories other_stuff

.PHONY: directories  # Note: you should be marking this as phony
directories: $(DIR_LIST)

$(DIR_LIST):
    mkdir -p $@

http://www.gnu.org/software/make/manual/make.html#Multiple-Targetsを参照してください。

于 2012-06-30T16:05:35.910 に答える