通配符%是否在Makefile中的依赖项中工作?



我尝试了以下两种方法,但总是得到(没有得到)"In nextFrag"印刷):

在美国广播公司(ABC)

开始
START : 
test.ABC
echo "In Start"
%.ABC : %.nextFrag
echo "In ABC"
%.nextFrag:
echo "In nextFrag"

# 2:

START : 
test.ABC
echo "In Start"
%.ABC : $*.nextFrag
echo "in ABC"
%.nextFrag:
echo "In nextFrag"

(注意:这主要针对GNUmake)

%不是通配符(至少在*,?[...]是通配符的意义上不是)。它用于定义所谓的模式规则,该规则仅用于定义先决条件。在模式规则中,%匹配任意字符串,因此%.c表示"所有*.c"文件都是先决条件。

对于您正在做的事情,当模式看起来不匹配任何文件时,您只需使用目标,这些目标名称不对应于任何文件。

.PHONY: START test.ABC nextFrag
START: test.ABC
echo "In Start"
test.ABC: nextFrag
echo "In ABC
nextFrag:
echo "In nextFrag"

最新更新