基于How do I make multiple targets from a set of templates for the source?,我现在想实现一个简单的模板引擎。
我很高兴使用sed
进行直接替换,但我也希望有条件。
例如,如果模板看起来像这样:
This is the file for engine:#if version != 'latest'##version#-#endif#alpine
不同版本(例如7.0和最新版本)的输出。
This is the file for engine:7.0-alpine
This is the file for engine:alpine
在sed
中写这个词虽然可能,但这确实意味着我不得不重新发明轮子。
对于unix环境,有哪些关于简单模板的建议?
答案 0 :(得分:0)
GNUmake
是一种完整但很尴尬的功能编程语言。这样做的好处是您可以随意编码,但是您喜欢,因为a)没有“ GNUmake的教会”会看不起您的编码风格,并且b)它的外观看起来很难看。也就是说,从源代码库中获得一些帮助,可以掩盖许多奇怪之处,这并不是一个坏建议。
使用gmtt,您的示例如下所示:
include gmtt.mk
version = latest
VERSION_STR = $(if $(call str-eq,$(version),latest),,$(version))
$(info This is the file for engine: $(VERSION_STR)alpine)