再问makefile问题
ldd2中的scull的mekafile中有以下代码:
depend .depend dep:
$(CC) $(CFLAGS) -M *.c > $@
ifeq (.depend,$(wildcard .depend))
include .depend
endif
-------------------------------------
请问:
1.depend .depend dep是伪目标或者多目标吗?为什么要定义3个,这3者之间是什么关系?在直接输入make命令的情况下它们会被执行吗?
2.-M是自动搜索依赖关系吗?
3.为什么ifeq中使用的是.depend而不是depend或dep?
4.$(wildcard .depend)展开的是什么?
------解决方案--------------------1.depend .depend dep是伪目标或者多目标吗?为什么要定义3个,这3者之间是什么关系?在直接输入make命令的情况下它们会被执行吗?
--是三个独立的目标有同样的依赖关系,并且用同样的规则去生成目标,当然这里是没有依赖关系,通过cc命令可以生成。在直接输入make命令下,有两种情况别执行,一,他们就是Makefile中的第一个目标,二,他们被第一个目标直接或者间接依赖。否则不能。
2.-M是自动搜索依赖关系吗?
--该选项会生成依赖关系并且讲该关系象标准输出设备输出。这里被重定向到文件中。
3.为什么ifeq中使用的是.depend而不是depend或dep?
--这只是选择而已,页可以用后面的啊。不过你这里要包含.depend,所以自然会选择前者。
4.$(wildcard .depend)展开的是什么
--如果.depend存在,就是.depend,否则是空串。进而就用于ifeq判断文件是否存在。如果是.depend,判断相等,那么我呢见存在;如果是空串,必然比相等。