在Makefile中查看Shell脚本的输出结果

4
我该如何在Makefile中的目标构建前执行shell脚本,并能够看到其运行时的输出?
我有一个名为prepare.sh的脚本,它生成一堆.pyx文件。这些.pyx文件是我的构建过程的起点,其中包含make的步骤,从.pyx -> .c -> .o -> .so
我不想在make之前单独运行prepare.sh。我希望让make替我运行它。
我已经成功实现了它,但我无法看到命令的输出。我想要看到它。这是我现在的代码:
PATH := ${PYTHONHOME}/bin:${PATH}

NOTHING:=$(shell ./prepare.sh)

PYXS?=$(wildcard merged/*.pyx)
SOURCES=$(PYXS:.pyx=.c)
OBJECTS=$(SOURCES:.c=.o)
SOBJECTS=$(OBJECTS:.o=.so)

你可以在prepare.sh中直接调用'make'命令。或者你可以完全将它们分开使用./prepare.sh && make,然后只需按上箭头(在大多数shell中)来调用命令。 - eqzx
1个回答

6

将脚本的输出重定向到stderr。在这种情况下,您还可以摆脱虚拟的NOTHING变量:

$(shell ./prepare.sh >&2)

更新。

另一个选项是在所有其他操作之前执行脚本的recipe中执行脚本:

.PHONY : prepare
prepare :
    ./prepare.sh

-include prepare

参见:原始Beta的答案中的此技巧,GNU Make手册条目解释了它的工作原理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接