一、Makefile中引用shell中的变量
test.sh
#!/bin/bash
set -e
export DIR=/home/yuyin.wei
make print
Makefile
print:
echo $(DIR)
执行test.sh,结果如下:
echo /home/yuyin.wei
/home/yuyin.wei
如果此时Makefile中使用echo $$(DIR),反而会出错,如下:
echo $(DIR)
/bin/sh: DIR: command not found
那Makefile中引用shell变量的时候,什么时候使用 $$?
当shell变量是在同一个命令行中的时候,如下:
SUBDIRS=tools examples src
target:
for dir in $(SUBDIRS); do $(MAKE) -C $$dir;done
此时dir是同一个命令行中,刚定义的一个变量,所以引用的时候要用$$
又比如:
VAR=3
target:
echo $(VAR);\
VAR=4;\
echo $(VAR);\
echo $$VAR
第1行,输出为3
第2行,定义了一个shell变量
第3行,输出的是Makefile开头定义的VAR变量,仍然是3
第4行,输出的是第2行定义的shell变量,输出的是4
所以这里有两个VAR变量,第2行定义的VAR变量也是同一个命令行中定义的,所以需要用$$进行引用