使用 Makefile 从特定文件名创建文件夹
with Makefile create folders from specific filenames
我需要一个 Makefile 为每个 <file.rst>
创建一个 <file>
文件夹然后执行
<file.rst>
上的气垫船需要一个文件夹作为第二个参数
$ tree
.
├── a.rst
├── b.rst
└── Makefile
有了这个 Makefile
$ cat Makefile
.PHONY: html
HTML_TARGETS:= $(patsubst %.rst,%.html,$(wildcard *.rst))
html: $(HTML_TARGETS)
%.html: %.rst
@rm -fr $(basename $@ .html)
@mkdir -p $(basename $@ .html)
@hovercraft -Ns $< $(basename $@ .html)
$
我有点工作
.
├── a
│ └── index.html
├── a.rst
├── b
│ └── index.html
├── b.rst
└── Makefile
我觉得这个 Makefile 是多么的古怪,有什么更好的写法吗?
顺便说一句,我无法在 Makefile 中添加此 echo:
@echo output done in $(basename $@ .html)/index.html
我得到:
output done in a /index.html
output done in b /index.html
^
└─ with an unwanted space
我想打印:
output done in a/index.html
output done in b/index.html
如果我理解正确,你想创建一个目录“x”,然后对每个文件“x.rst”执行hovercraft x.rst x/index.html
,那么这应该是一个简洁的方法。
SOURCES := $(wildcard *.rst)
TARGETS := $(SOURCES:.rst=/index.html)
%/index.html: %.rst
mkdir -p $*
hovercraft $< $@
.PHONY: all
all: $(TARGETS)
我需要一个 Makefile 为每个 <file.rst>
创建一个 <file>
文件夹然后执行
<file.rst>
上的气垫船需要一个文件夹作为第二个参数
$ tree
.
├── a.rst
├── b.rst
└── Makefile
有了这个 Makefile
$ cat Makefile
.PHONY: html
HTML_TARGETS:= $(patsubst %.rst,%.html,$(wildcard *.rst))
html: $(HTML_TARGETS)
%.html: %.rst
@rm -fr $(basename $@ .html)
@mkdir -p $(basename $@ .html)
@hovercraft -Ns $< $(basename $@ .html)
$
我有点工作
.
├── a
│ └── index.html
├── a.rst
├── b
│ └── index.html
├── b.rst
└── Makefile
我觉得这个 Makefile 是多么的古怪,有什么更好的写法吗?
顺便说一句,我无法在 Makefile 中添加此 echo:
@echo output done in $(basename $@ .html)/index.html
我得到:
output done in a /index.html
output done in b /index.html
^
└─ with an unwanted space
我想打印:
output done in a/index.html
output done in b/index.html
如果我理解正确,你想创建一个目录“x”,然后对每个文件“x.rst”执行hovercraft x.rst x/index.html
,那么这应该是一个简洁的方法。
SOURCES := $(wildcard *.rst)
TARGETS := $(SOURCES:.rst=/index.html)
%/index.html: %.rst
mkdir -p $*
hovercraft $< $@
.PHONY: all
all: $(TARGETS)