使用makefile根据两个后缀规则处理文件
我有一个docroot文件夹,其中包含需要生成的源文件 .usp->.so .htt->.html 当前我的makefile具有以下内容: .后缀:.usp.htt使用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_
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)