我想在 makefile 中使用工具msgfmt从 .po 源生成 .mo 文件。.po 源针对每种语言,位于如下文件夹结构中:
$(projectpath)/locale/de/LC_MESSAGES
$(projectpath)/locale/fr/LC_MESSAGES
$(projectpath)/locale/en/LC_MESSAGES
生成的.mo 文件应位于类似的文件夹结构中:
$(buildpath)/locale/de/LC_MESSAGES
$(buildpath)/locale/fr/LC_MESSAGES
$(buildpath)/locale/en/LC_MESSAGES
在 makefile 中,我已成功为源和目标创建了 2 个变量:
PO_FILES := $(wildcard $(projectpath)/locale/*/LC_MESSAGES/*.po)
MO_FILES := $(subst $(projectpath)/locale/,$(buildpath)/locale/,$(subst .po,.mo,$(PO_FILES)))
并且我还能够为 MO_FILES 创建目标目录。
DIRS := $(sort $(dir $(MO_FILES)))
但是,我在定义依赖关系以触发生成时失败了。
以下选项不起作用:
%.mo:%.po
$(buildpath)/locale/%/LC_MESSAGES/%.mo: $(projectpath)/locale/%/LC_MESSAGES/%.po
我也尝试了其他几个组合,结果相同。Make 声称它没有制定目标的规则。