Makefile与export
这里主要说一下在Makefile中如何使用export环境变量(这里只谈论在linux下的,windows的没测试试过)。需求是,在一个目标中设置一个环境变量,在依赖目标或命令中使用该环境变量。因为在依赖目标或命令中经常需要根据不同的变量值做不同的处理。设置环境变量值有三种方法:Makefile中直接: export变量目标命令中,在命令前:变量=值command单独定义一个目标(不能有命令),目
·
这里主要说一下在Makefile中如何使用export环境变量(这里只谈论在linux下的,windows的没测试试过)。
需求是,在一个目标中设置一个环境变量,在依赖目标或命令中使用该环境变量。
因为在依赖目标或命令中经常需要根据不同的变量值做不同的处理。
设置环境变量值有三种方法:
- Makefile中直接: export 变量
- 目标命令中,在命令前:变量=值 command
- 单独定义一个目标(不能有命令),目标1: export 变量=值
直接上Makefile
.PHONY: all clean aa t0 t1 t2 t3 t4 t5 t6
# test.c
# char* ps = getenv("bb");
# printf("bb=%s\n", ps ? ps : "no bb");
# bb=99
export bb=99
aa:
echo $$bb
test: test.c
gcc -o test test.c
t0: export bb=00
t0: test aa
./test
t1: test aa
bb=11
make aa
./test
t2: test
export bb=22
make aa
./test
t3: test
bb=33 make aa
bb=33 ./test
t4: export bb=44
t4: test
make aa
./test
t5: bb=55
t5: test
make aa
./test
#多加一种方法,这种可以避免Makefile中有export bb的情况(与t5的差别)
t6: export bb=66
t6: test aa
./test
clean:
rm -f test
简单说一下执行结果:
t0 -> 00, 00
t1 -> 99, 99
t2 -> 99, 99
t3 -> 99, 33
t4 -> 99, 44
t5 -> 99,55
t6 -> 66,66
大概是这么几种情况。
Makefile中把export bb=99注释掉,打开bb=99,运行结果又会有些差别(其中t5差别最大);
两行都注释掉,又会有差别,这些就个人自行去动手体会吧。
最后,各位根据自己的情况去结合使用吧。
(转载请注明出处)
更多推荐
已为社区贡献1条内容
所有评论(0)