使用匹配"%"的字符串在制作模式规则中

时间:2017-07-31 19:56:38

标签: makefile

我使用了一系列目录的模式规则(它们碰巧是Django语言环境文件,但这不应该有任何区别)。翻译目录包含四个或五个子文件夹,每个子文件夹具有完全相同的结构。我想说:

  

如果文件夹中的文件名为locale/en/LC_MESSAGES/django.po   translations/x比文件更新   locale/fr/LC_MESSAGES/django.po位于同一文件夹中   以 x 作为参数运行一些命令。

我试图表达这一点。 (显而易见的)问题是"%"在规则的配方部分并不意味着"无论是什么匹配'%'在目标"。

translations/%/locale/fr/LC_MESSAGES/django.po: translations/%/locale/en/LC_MESSAGES/django.po: 
    tx push -s -r project.% && \
    tx pull -r project.% && \
    bin/dev/manage.py compilemessages

有什么想法吗?

修改:根据已接受的答案进行更正。

1 个答案:

答案 0 :(得分:4)

您的意思是说规则的食谱部分中的% ,而不是声明的规则部分

请参阅automatic variables上的页面,该页面将引导您:

  

$*

     

隐式规则匹配的词干(请参阅模式匹配方式)。

所以:

translations/%/locale/fr/LC_MESSAGES/django.po: translations/%/locale/en/LC_MESSAGES/django.po: 
        tx push -s -r project.$* && \
        tx pull -r project.$* && \
        bin/dev/manage.py compilemessages