我正在尝试从 .tpl 和一些 .def 文件生成 docker 文件,只要不需要做出任何决定,autogen 就可以很好地完成工作。但是,当我有一些需要评估的条件时,我的文件会在不考虑条件的情况下生成。
例如,我有以下自动生成模板(.tpl):
RUN [+ PKGMAN +] -y install clang cmake doxygen graphviz
[+IF PKGMAN == "yum" +]
RUN [+ PKGMAN +] -y install pkgconfig
[+ENDIF+]
[+IF PKGMAN == apt-get +]
RUN [+ PKGMAN +] -y install pkg-config
[+ENDIF+]
以及以下定义文件(.def):
autogen definitions oscxx;
OSNAME = ubuntu;
OSVER = "16.04";
PKGMAN = "apt-get";
因为PKGMAN = apt-get
,我希望输出仅包含第二个 if-condition 中包含的语句。但是,我越来越
RUN apt-get -y install clang cmake doxygen graphviz
RUN apt-get -y install pkgconfig
RUN apt-get -y install pkg-config
所以 PKGMAN 被正确地替换为“apt-get”,但在我的 IF 宏中它没有被评估。我想我应该尝试一下
[+IF [+PKGMAN+] == "apt-get" +]
,但是当我这样做时,我被提醒不能嵌套宏。
让这个 IF 工作的正确语法是什么?提前致谢