makefile - 如何递归地使用 make 和子收据?
问题描述
我必须制作如下文件:
Makefile
foo/
Makefile
顶级制作看起来像:
make-sample:
cd foo && make all
底部制作看起来像:
all:
./builder.sh
子程序按设计工作并将一些内容打印到终端。从顶部 make 文件运行它时:make foo
它不会返回相同的 cli 输出,这让我觉得有些地方不正确。我正在查看 make https://www.gnu.org/software/make/manual/html_node/Recursion.html#Recursion的递归手册页,我对此有所了解。看起来我很接近了,虽然我不明白$(MAKE)
没有给出食谱的用途。
看起来它想让我说类似的话:
make-sample:
cd foo && $(MAKE)
# or
make-sample2:
$(MAKE) -C foo
有人可以更好地向我解释如何使用配方运行子制作,以便将相同的信息正确记录到标准输出吗?
解决方案
在您的顶级目录中,foo
是一个目录,您需要通过添加以下行明确告诉make
您的目标名称foo
不是文件,也不是目录:
.PHONY: foo
否则,当您从顶级目录执行操作时,make
可能什么都不做。make foo
推荐阅读
- python - 无论如何要使用现有的浏览器会话来运行 selenium 会话
- react-native - 我怎样才能用 react-native-chart-kit 做这个
- javascript - Uncaught TypeError: Object(...) is not a function at connect
- php - 如何在 laravel 集体中获得属性?
- flutter - 运行命令 Flutter run 时出现 Flutter 错误
- google-chrome - Google 表格中的事件变量不会获取我从另一个单元格复制和粘贴值的单元格的值
- r - 创建一个输出一系列 2 x 2 表的函数
- c# - 如何使用 int 数组作为字典键 C#
- nestjs - 什么是 typeorm 中的 Exactly One to many
- scrapy - Scrapy - 重复过滤和下载延迟