3

如何在 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)
4

1 回答 1

5

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

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

UPD。

另一种选择是在运行之前运行的配方中执行脚本:

.PHONY : prepare
prepare :
    ./prepare.sh

-include prepare

另请参阅:原始 Beta 对这个 hack 的回答,GNU Make 手册条目解释了它是如何工作的。

于 2012-06-13T19:21:44.880 回答