如果makefile通配符系统包含等号,则它们似乎不匹配目标。有办法解决这个缺陷吗?一些标志或设置或规则逃脱等号?我知道我可以不使用等号,但如果可能,我更愿意修复make的这种特质。
这是我的意思
的一个例子$ cat Makefile
all:
echo Dummy target
b_%:
echo $@
$ make b_c=1
echo Dummy Target
$ make b_c1
echo b_c1
第一个make命令与b_%
不匹配,即使它应该。我也无法找到%wildcard应该匹配的文档。有什么指针吗?我的制作版本是
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This program built for i386-apple-darwin10.0
答案 0 :(得分:1)
此处的问题不在于%
语法,而在于any command-line argument with an equals sign in it is interpreted as a variable assignment。
您应该会发现,如果您添加依赖项all: b_c=1
,那么make all
会生成该文件。
您可以对make
使用的文件名进行限制 - 它们不能包含空格或换行符,例如反斜杠也是有问题的(虽然不是完全不可能适应简单的用例)。
如果您必须拥有一个名为this的文件,我建议的解决方法是在内部使用不同的名称,然后将其符号链接到外部名称作为make
配方的最后一步。