shell – 如何从makefile源脚本?

前端之家收集整理的这篇文章主要介绍了shell – 如何从makefile源脚本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有更好的方法来源脚本,它设置env vars,从一个makefile?
  1. FLAG ?= 0
  2. ifeq ($(FLAG),0)
  3. export FLAG=1
  4. /bin/myshell -c '<source scripts here> ; $(MAKE) $@'
  5. else
  6. ...targets...
  7. endif
回答问题的问题:你不能。

基本问题是子进程不能改变父进程的环境。 shell通过在source’ing时不分叉一个新进程,而是在shell的当前化身中运行这些命令。这工作正常,但make不是/ bin / sh(或你的脚本的任何shell),不理解这种语言(除了他们有共同点)。

Chris Dodd和Foo Bah已经解决了一个可能的解决方法,所以我建议另一个(假设你正在运行GNU make):后处理shell脚本到make兼容文本,并包括结果:

  1. shell-variable-setter.make: shell-varaible-setter.sh
  2. postprocess.py @^
  3.  
  4. # ...
  5. else
  6. include shell-variable-setter.make
  7. endif

杂乱的细节留下作为一个练习。

猜你在找的Bash相关文章