如何在 mkfile 中定义变量的默认值

How can I define the default value for a variable in mkfile

生成文件:

XDG_CONFIG_HOME?=$HOME/.config

我想将该行转换为 Plan9 mkfile 语法。

我试过了

XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}

它有效,但它很丑。还有其他选择吗?

在shell中,“:-”用于将变量设置为默认值,以防变量没有值:

XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}

mk(1) 不提供这种内置的定义变量的方法,仅当它们不是非空环境变量时。实际上,贝尔实验室的 make(1) 和 POSIX make(1) 都没有提供这样的方法, ?= 语法只是一个 GNU 扩展。

您通常会在 mkfile 中正常设置变量:

XDG_CONFIG_HOME = $home/.config

并覆盖mk(1)命令中的变量:

    ; mk 'XDG_CONFIG_HOME='^$home^'/cfg'