如何在Makefile中构建目标之前执行shell脚本,并在运行时查看输出?
我有一个调用的脚本prepare.sh生成一堆.pyx文件..pyx文件是我的构建过程涉及make的起点.它来自.pyx - > .c - > .o - > .so
我不喜欢在make之前单独运行prepare.sh.我想让它为我运行它.
我让它工作,但我没有看到命令的输出.我想看看它.这就是我现在拥有的:
PATH := ${PYTHONHOME}/bin:${PATH}
NOTHING:=$(shell ./prepare.sh)
PYXS?=$(wildcard merged/*.pyx)
SOURCES=$(PYXS:.pyx=.c)
OBJECTS=$(SOURCES:.c=.o)
SOBJECTS=$(OBJECTS:.o=.so)
Run Code Online (Sandbox Code Playgroud)
将脚本的输出重定向到stderr.在这种情况下,您还可以摆脱虚拟NOTHING变量:
$(shell ./prepare.sh >&2)
Run Code Online (Sandbox Code Playgroud)
另一种选择是在一个配方中执行脚本,该配方在其他任何事件之前运行:
.PHONY : prepare
prepare :
./prepare.sh
-include prepare
Run Code Online (Sandbox Code Playgroud)
另请参阅:原始Beta的答案与此hack,GNU Make手册条目解释它是如何工作的.