摘自:https://www.dazhuanlan.com/tahao/topics/1562291
今天我为了makefile的方便起见,将一些变量通过脚本的形式给到makefile中,但是通过shell命令给makefile变量赋值让我头疼了一波..
在shell中赋值非常简单
1
|
➜ PRE_CKPT=log/20190405-174159
|
在 makefile 中实现
- 第一次写法
1
2
3freeze:
NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`
echo ${NUM}
执行,发现什么都没有输出
1
|
➜ make freeze PRE_CKPT=log/20190405-174159
|
这里的问题是,我们通过shell命令赋值的是shell的变量,这个变量还不是makefile的变量.所以我们需要通过$$VAR的方式调用这个变量.
- 第二次写法
1
2
3freeze:
NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`
echo $$NUM
执行,发现还是没有输出
1
|
➜ make freeze PRE_CKPT=log/20190405-174159
|
这里是因为makefile中命令如果没有使用;来连接,是无法共享变量的.所以还得修改
- 第三次写法
1
|
freeze:
|
终于有了我想要的输出
1
|
➜ make freeze PRE_CKPT=log/20190405-174159
|