我想在Makefile中运行uninstall
目标时使用函数/宏交换两个文件。
这就是我所拥有的只留下其中一个文件并删除其他两个文件的内容:
swap = mv $(1) $(3); mv $(2) $(1); mv $(3) $(2)
uninstall:
@$(call swap,`printf "%s\n" $(FILE).* | sort -r | sed -n 1p`,\
$(FILE),$(shell mktemp $(FILE).XXX))
答案 0 :(得分:0)
如果您知道要交换的文件,可以尝试以下内容。我假设要交换的对是fooXXX, barXXX
。
define SWAP_files
swap_$(1):
@temp=$$(shell mktemp temp.XXXXXX); \
to_swap_with=$$(patsubst foo%,bar%,$(1)); \
mv $(1) $$$$temp; \
mv $$$$to_swap_with $(1); \
mv $$$$temp $$$$to_swap_with
uninstall: swap_$(1)
endef
$(foreach foo,$(FOOS),$(eval $(call SWAP_files,$(foo))))
Foreach fooXXX
文件实例化规则:
swap_fooXXX:
@temp=$(shell mktemp temp.XXXXXX); \
to_swap_with=$(patsubst foo%,bar%,fooXXX); \
mv fooXXX $$temp; \
mv $$to_swap_with fooXXX; \
mv $$temp $$to_swap_with
和规则:
uninstall: swap_fooXXX