如何在Makefile中使用长变量名?

如何在Makefile中使用长变量名?

今天我在学习make命令,我发现它似乎可以通过读取当前目录来 执行任何bash命令。Makefile

然而,我遇到了一个问题。当使用变量时,系统似乎只会读取变量的第一个字符。

以下是我的文件和运行结果:

# FILE CONTENT
Z="zen_on_the_moon"
now=$(date)

fun:
    touch $Z
    echo $now
    echo "file created on" $now >> $Z

# RUNNING IT
=>make fun
touch "zen_on_the_moon"
echo ow
ow
echo "file created on" ow >> "zen_on_the_moon"

我应该如何使用下面项目now中的变量?Makefilefun

答案1

Makefile,你引用一个变量通过使用语法$(var_name)。使用$var_name导致除了美元符号$、左括号(或左大括号之外的第一个字符{被视为变量名。

在 中$now,您实际上获得了变量的内容,$n后跟文字字符串ow

所以你需要:

$(now)

获取名为 的变量的内容now

另请注意,now=$(date)获取的是 name 变量的内容date而不是 command 的结果date。你需要使用外壳函数:

now=$(shell date)

相关内容