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