如果存在具有相同基本名称的文件名,则在 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

文件夹 ac 而不是 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))