makefile - 下面的makefile是什么意思?
问题描述
这是Makefile如下,我想问一下step1和2会分别做什么?谢谢
DIRS = modules utils library
BUILDDIRS = $(DIRS:%=build-%) step1
all: $(BUILDDIRS)
$(BUILDDIRS):
$(MAKE) -C $(@:build-%=%) step2
解决方案
这看起来像一个调度 Makefile。它的工作是公开构建目标build-modules
,build-utils
并且build-library
. 如果没有给它任何目标,它会构建all
依赖于所有这些的目标。例如,我们还可以考虑make build-utils
直接调用。
每个build-<whatever>
对应一个<whatever>
没有build-
前缀的目录。
例如要更新目标build-utils
,操作是递归调用make
with-C utils step2
作为参数:切换到utils
目录并在Makefile
那里查找,调用它的step2
目标。
这Makefile
有一个缺陷:目标all
和build-<dir>
目标都是假的,但没有.PHONY:
声明它们。这意味着make
它将探测文件系统,查找名为all
和的文件build-modules
,等等。如果您使用这些名称创建文件,例如 bytouch build-modules
或touch all
,Makefile
则会出现故障。
推荐阅读
- c# - 从 MultipartFormDataContent 和 StreamContent 获取上传进度
- java - 在 glassfish4.1 上部署应用程序时出错
- c# - 在协程中值为真后无法返回字符串
- android - 如何在异步提交结果时观察 PagedList LiveData?
- ruby - Thread.abort_on_exception 在任何地方引发?
- sql - 计算日夜数的SQL查询
- python - 不记名令牌在 requests.post 授权标头中不起作用?
- unity3d - 我如何防止运动学对象不通过另一个刚体对象
- excel - Excel VBA通过单击形状更改形状的背景图像
- python - 如何加载html页面然后抓取页面