仅当目标存在时才执行的 GNU Make 规则?
GNU Make rule that executes only if target exists?
在一个相当复杂的 Makefile 中,我偶尔想仅在目标 存在时才调用某些规则。例如,我可能已经创建了一个本地目录并使用 losetup
将文件挂载到其中。我想在处理它们时让挂载点和目录保持打开状态,但在某些操作之前自动关闭它们。
当需要打包时,我想 sync
挂载的文件,umount
它,然后对底层文件做一些事情。有没有办法反转规则的意义,以便它仅在特定目标 is 存在时执行?
怎么样:
target = $(wildcard somefile)
$(target): ; @echo build $@
.PHONY: $(target)
在一个相当复杂的 Makefile 中,我偶尔想仅在目标 存在时才调用某些规则。例如,我可能已经创建了一个本地目录并使用 losetup
将文件挂载到其中。我想在处理它们时让挂载点和目录保持打开状态,但在某些操作之前自动关闭它们。
当需要打包时,我想 sync
挂载的文件,umount
它,然后对底层文件做一些事情。有没有办法反转规则的意义,以便它仅在特定目标 is 存在时执行?
怎么样:
target = $(wildcard somefile)
$(target): ; @echo build $@
.PHONY: $(target)