使用makefile根据两个后缀规则处理文件

使用makefile根据两个后缀规则处理文件,makefile,Makefile,我有一个docroot文件夹,其中包含需要生成的源文件 .usp->.so .htt->.html 当前我的makefile具有以下内容: .后缀:.usp.htt SOURCES = $(wildcard docroot/*.usp) $(wildcard docroot/*.htt) OBJECTS = $(SOURCES:.usp=.so) $(SOURCES:.htt=.html) all : ${OBJECTS} .PHONY : all %.usp: %.so usp_

我有一个docroot文件夹,其中包含需要生成的源文件 .usp->.so .htt->.html

当前我的makefile具有以下内容: .后缀:.usp.htt

SOURCES = $(wildcard docroot/*.usp) $(wildcard docroot/*.htt)
OBJECTS = $(SOURCES:.usp=.so) $(SOURCES:.htt=.html)

all : ${OBJECTS}
.PHONY : all 

%.usp: %.so
    usp_compile_incl.sh -i ~/Projects/Concise-ILE/include $<

%.htt: %.html
    gpp -I~/Projects/Concise-ILE/include -C $< -o $@

.PHONY: clean
clean:
    rm -f docroot/*.so docroot/*.html
SOURCES=$(通配符docroot/*.usp)$(通配符docroot/*.htt)
OBJECTS=$(源代码:.usp=.so)$(源代码:.htt=.html)
全部:${OBJECTS}
冒牌货:全部
%.美国药典:%.美国药典

usp_compile_incl.sh-i~/Projects/简明ILE/include$< %.htt:%.html gpp-I~/Projects/简明ILE/include-C$<-o$@ .假冒:干净 清洁: rm-f docroot/*.so docroot/*.html
make:**没有规则将目标设置为“docroot/fortune.so”,这是“all”所需要的。停下来

按照sauerburger标准的溶液

.SUFFIXES: .usp .htt

SOURCES_USP  = $(wildcard docroot/*.usp)
SOURCES_HTT = $(wildcard docroot/*.htt)
OBJECTS = $(SOURCES_USP:.usp=.so) $(SOURCES_HTT:.htt=.html)

all : ${OBJECTS}
    .PHONY : all 

%.so: %.usp
    usp_compile_incl.sh -i ~/Projects/Concise-ILE/include $<

%.html: %.htt
    gpp -I~/Projects/Concise-ILE/include -C $< -o $@
后缀:.usp.htt
SOURCES_USP=$(通配符docroot/*.USP)
SOURCES_HTT=$(通配符docroot/*.HTT)
OBJECTS=$(SOURCES\u USP:.USP=.so)$(SOURCES\u HTT:.HTT=.html)
全部:${OBJECTS}
冒牌货:全部
%.so:%美国药典

usp_compile_incl.sh-i~/Projects/简明ILE/include$< %.html:%.htt gpp-I~/Projects/简明ILE/include-C$<-o$@
的构建规则是
。因此
.html
是错误的。这应该起作用:

%.so: %.usp
    usp_compile_incl.sh -i ~/Projects/Concise-ILE/include $<

%.html: %.htt
    gpp -I~/Projects/Concise-ILE/include -C $< -o $@

否则,您将得到一个混合对象列表。第一个替换还将包括所有
*.htt
文件,第二个替换将包括所有
*.ups
文件。

哪条规则应该产生
财富。因此
?usp\u compile\u incl.sh-i ~/Projects/compile/include$Thankyou make现在起作用了。我知道这是一件我忽略的简单事情。
SOURCES_USP  = $(wildcard docroot/*.usp)
SOURCES_HTT = $(wildcard docroot/*.htt)
OBJECTS = $(SOURCES_USP:.usp=.so) $(SOURCES_HTT:.htt=.html)