在makefile中运行脚本

时间:2015-05-27 11:26:28

标签: shell scripting makefile

我想在像这样的makefile中运行一个脚本

    all: a b
    a:
        cd ~/trials; \
        . ./sx.sh
    b:
        echo $(bn)

sx.sh这样做

    export bn=1

发出make命令时,我在终端中看不到变量。我的目标是在为那些特定于脚本的设置编译项目之前运行脚本。

1 个答案:

答案 0 :(得分:2)

您不能假设make发出的命令都是由shell的同一实例处理的。 Make不会打开shell并逐个提供命令,也不会将命令保存到文件中,然后将其提供给shell。它通常会为每个命令生成一个shell,如下所示:

$(SHELL) -c 'cd ~/trials; . ./sx.sh'

这意味着您无法改变环境并让以后的命令继承它。

最好的方法是使用make变量来存储您希望传递给命令的细节,并在适当的位置使用这些变量。