在script.sh中声明的导出变量并在mupltiple Makefiles

时间:2016-12-14 11:51:05

标签: shell makefile permissions sh

我正在尝试创建类似全局变量的东西,我将使用它来使我的项目易于为其他开发人员部署。 我想有一个.sh文件,其中有一个定义项目位置的变量。 后来我想导出这个变量并使其在我创建的每个makefile中都可访问,这样我就可以使用这个设计来保持一切在一个地方不变。

这是我想要构建的一个例子:

在script.sh中创建和导出变量:

#!/bin/bash

DIRECTORY='some path value here'

导入多个Makefile中的值:

# start script and fetch the value
VAR := $(shell ./script.sh | sed -n '/^result: /s/^.*: //p')

all:
    @echo VAR=$(VAR)

我想看看其他人如何处理同样的问题。 成为更好的开发者是我的目标。 :)

总是欢迎反馈。

1 个答案:

答案 0 :(得分:1)

在shell中导出的环境变量在make中是可见的,所以在这样的shell脚本中:

#!/bin/sh
VAR=value
export VAR

make $*

Makefile将从定义为VAR的{​​{1}}开始。这是将shell脚本中的变量转换为make的一种方法。

如果您不希望shell脚本运行make,您可以让用户使用它:

value

脚本中设置的变量也是可见的。

或者当然,这里似乎没有任何理由需要shell脚本。将您的配置粘贴到Makefile的片段中(看起来几乎完全就像您的shell脚本一样,但不要使用多个单词值的引号),然后在主makefile中使用$ source script.sh $ make

还要注意这样的语法:

include Makefile.inc

它同样有效,包含在Makefile中或者源自shell脚本。因此,有时可以在两个地方使用相同的包含文件!