【发布时间】:2013-03-17 17:12:38
【问题描述】:
这是我的 makefile 的一部分:
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”目录中的所有目录调用make,而不需要“impl”本身。我知道 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
$(foreach c,$(ALLMAKES),$(shell make -C $(c)))
有什么想法吗?
【问题讨论】:
-
致发表评论但将其删除的人...从 makefile 调用与 shell 完全相同的 make 命令是行不通的,所以您很有帮助...
-
我删除了我的评论,因为我认为我走错了路。我正在寻找更好的答案...