【发布时间】:2017-10-09 11:30:54
【问题描述】:
我正在尝试让一些依赖安装目标在我的 Makefile 中工作,如下所示:
.PHONY: install-everything install-part1 install-part2
install-everything: install-part1 install-part2
install-part1:
$(call part1-function)
install-part2:
$(call part2-function)
这与此处的 GNU Make 手册中的描述非常相似:https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
我做到了
make install-part1
首先,然后手动(即 rm -rf)删除创建的 $(DESTDIR) 目录。
现在,每次我尝试运行上面列出的任何目标时,我都会得到例如:
make: nothing to be done for 'install-everything'.
如果我尝试强制使用“-B”标志,我会得到相同的答案。如果我添加调试信息(make --debug),我会得到
File 'install-everything' does not exist.
Must remake target 'install-everything'.
我认为使用 .PHONY 指令可以解决这个问题 - 谁能帮忙?
【问题讨论】:
-
可能是您的
$(call partX-function)扩展为空。如果是这种情况,则所有食谱都是空的,并且您得到的信息是正确的:没有什么可做的。请展示您的partX-function宏示例。 -
它只是创建一些目录,然后将内容复制到:define install-part1: $(mkdir -p $(1)) $(cp -r files $(1)) endef