我正在尝试创建类似全局变量的东西,我将使用它来使我的项目易于为其他开发人员部署。 我想有一个.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)
我想看看其他人如何处理同样的问题。 成为更好的开发者是我的目标。 :)
总是欢迎反馈。
答案 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脚本。因此,有时可以在两个地方使用相同的包含文件!