src ディレクトリのサブディレクトリにちなんで名付けられた複数のアーティファクトを構築する単純なメイクファイルを作成しようとしています。ここに私のディレクトリ構造があります:
>find .
.
./makefile
./src
./src/binA
./src/binA/main.java
./src/binB
./src/binB/main.cpp
./src/binC
./src/binC/main.scala
ここに私が使用しようとしているメイクファイルがあります。同じルールでパターンとワイルドカードの両方を使用すると、何らかの理由でバイナリ ターゲットが依存関係の拡張を拒否する
>cat makefile
dirs := $(shell find src -mindepth 1 -type d)
all: $(dirs:src/%=bin/%.exe)
@echo $(dirs)
bin/%.exe: src/%/*
@echo "$@ <-- $^"
私はdirsが適切に設定されていることを知っています
src/binA src/binB src/binC
これは私が得るエラーです
>make
make: *** No rule to make target `bin/binA.exe', needed by `all'. Stop.
その依存関係をその名前に基づくサブディレクトリの内容に適切に展開する一般的なルールを作成するにはどうすればよいですか