如果存在具有相同基本名称的文件名,则在 Makefile 中删除文件夹
in Makefile remove folders if a filename with the same basename exist
以下情况我需要移除
.
├── a
│ └── index.html
├── a.rst
├── b
│ └── index.html
├── c
│ └── index.html
└── c.rst
文件夹 a
和 c
而不是 b
。
我让它与这个 Makefile 一起工作:
$ cat Makefile
.PHONY: clean
HTML_TARGETS:= $(patsubst %.rst,%.html,$(wildcard *.rst))
clean: $(HTML_TARGETS)
%.html: %.rst
@echo rm $(basename $@ .html)
$
$ make
rm a
rm c
$
有没有更好的写法? (patsubst 使用不需要的 .html
sub)
我的意思是你为什么不做类似的事情:
.PHONY: clean
HTML_DIRS := $(patsubst %/,%,$(dir $(wildcard */*.html)))
RST_FILES := $(basename $(wildcard *.rst))
clean:
echo rm -r $(filter $(RST_FILES),$(HTML_DIRS))
以下情况我需要移除
.
├── a
│ └── index.html
├── a.rst
├── b
│ └── index.html
├── c
│ └── index.html
└── c.rst
文件夹 a
和 c
而不是 b
。
我让它与这个 Makefile 一起工作:
$ cat Makefile
.PHONY: clean
HTML_TARGETS:= $(patsubst %.rst,%.html,$(wildcard *.rst))
clean: $(HTML_TARGETS)
%.html: %.rst
@echo rm $(basename $@ .html)
$
$ make
rm a
rm c
$
有没有更好的写法? (patsubst 使用不需要的 .html
sub)
我的意思是你为什么不做类似的事情:
.PHONY: clean
HTML_DIRS := $(patsubst %/,%,$(dir $(wildcard */*.html)))
RST_FILES := $(basename $(wildcard *.rst))
clean:
echo rm -r $(filter $(RST_FILES),$(HTML_DIRS))