如何制作"%"通配符匹配包含等号的目标?

时间:2016-01-16 06:07:48

标签: makefile gnu-make

如果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                         

1 个答案:

答案 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配方的最后一步。