我有一个docroot文件夹,其中包含需要构建的源文件 .usp - > 。所以 .htt - > html的
目前我的makefile有以下内容: .SUFFIXES:.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
制作:***没有规则要制作'所有'所需的目标'docroot / fortune.so'。停止。
根据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 $@
答案 0 :(得分:1)
.so
和.html
的构建规则是错误的。这应该有效:
%.so: %.usp
usp_compile_incl.sh -i ~/Projects/Concise-ILE/include $<
%.html: %.htt
gpp -I~/Projects/Concise-ILE/include -C $< -o $@
规则的语法是TARGET: DEPENDENCIES
。
您还应该拆分源变量
SOURCES_USP = $(wildcard docroot/*.usp)
SOURCES_HTT = $(wildcard docroot/*.htt)
OBJECTS = $(SOURCES_USP:.usp=.so) $(SOURCES_HTT:.htt=.html)
否则,您最终会得到一个混合对象列表。第一个替换文件还包括所有*.htt
个文件,第二个文件包含所有*.ups
个文件。