source 是一个 bash 内置命令,man bash 然后找到 SHELL BUILTIN COMMANDS 部分。而 Makefile 要执行的话必须是能 fork 出进程的,所以无法执行。
makefile的默认shell是/bin/sh,本身不支持source
可以将shell切换成/bin/csh来支持source
如下所示:
#Makefile
SHELL := /bin/csh
rule:
source env.sh && YourCommand
举例:

运行效果:

本文详细讲解了Makefile中如何使用SHELL=/bin/csh支持source命令,以执行env.sh脚本,并通过实例展示了如何在Makefile中实现这一功能。特别提到了bash的限制及为何切换到csh的原因。
source 是一个 bash 内置命令,man bash 然后找到 SHELL BUILTIN COMMANDS 部分。而 Makefile 要执行的话必须是能 fork 出进程的,所以无法执行。
makefile的默认shell是/bin/sh,本身不支持source
可以将shell切换成/bin/csh来支持source
如下所示:
#Makefile
SHELL := /bin/csh
rule:
source env.sh && YourCommand
举例:

运行效果:


被折叠的 条评论
为什么被折叠?