Makefile 关于cd命令的注意事项

版权声明:转载请声明~ https://blog.csdn.net/weixin_38890593/article/details/89500105

要编译内核改写Makefile的时候发现关于cd的一些问题
我需要创建一个环境变量为上一级目录的路径,代码如下:


cd ../
export SRCBASE := $(shell pwd) 
 

执行make,提示:Makefile:15: *** missing separator. Stop.

执行命令需要TAB符在前(前面加一个TAB),修改后如下:
	cd ../
	export SRCBASE := $(shell pwd) 

执行make,发现SRCBASE并不是当前的上级目录!
原因是cd命令在Makefile中只在当前行生效!
正确写法应该是这样:

cd ../ && export SRCBASE := $(shell pwd) 

下面看简单的事例:

编辑一个Makefile
  1
  2 all:
  3         cd ../ && pwd
  4         pwd

在test目录下执行make

root@:~/test$ make

cd ../ && pwd
/home/root
pwd
/home/root/test
注:我的test目录的上一级目录就是root目录
可以看到第一句命令cd ../生效了,但是第二命令pwd打印的是test,而不是root

猜你喜欢

转载自blog.csdn.net/weixin_38890593/article/details/89500105