ここに私のメイクファイルの一部があります:
PATH := $(shell pwd)
EDIR := impl
EFFECTS := $(filter-out $(EDIR), $(shell find $(EDIR) -maxdepth 1 -type d))
ALLMAKES := $(patsubst %, $(PATH)/%, $(EFFECTS))
all:
$(foreach c,$(ALLMAKES),$(MAKE) -C $(c))
したがって、基本的には、「impl」自体を使用せずに、「impl」ディレクトリ内のすべてのディレクトリに対して make を呼び出したいと考えています。make は最後に -C 引数を指定して呼び出されたときの最後のディレクトリを覚えていることを理解しています。そのため、毎回絶対パスを指定します。エコーを作成するのは、私が望むもののようです:
make -C <projectdir>/impl/thing1 make -C <projectdir>/impl/thing2 make -C <projectdir>/impl/thing3
問題は、make がコマンドを実行せず、次のように出力することです。
make: make: Command not found.
makefile の外で各ディレクトリに対して「make -C <path>」を個別に呼び出すことができますが、foreach 呼び出しでは機能しません。代わりにこれを試しましたが、どちらも機能しません:
$(foreach c,$(ALLMAKES),$(shell make -C $(c)))
何か案は?