为多个目标编写一个包含一条规则的 makefile?

Chr*_*ing 1 python windows qt makefile pyqt4

这似乎是一个非常简单的问题,但我找不到任何方法来解决它。

我的目的是通过调用 pyuic4 命令(来自PyQt)将每个“.ui”文件转换为“.py”文件。我尝试用一​​个非常短的 makefile 来管理它:

%.py: %.ui
    pyuic4 $< --output $@
Run Code Online (Sandbox Code Playgroud)

这就是我目前所需要的。

makefile 名为“Makefile”,位于调用“make”的文件夹中,“.ui”文件也是如此。“pyuic4(.bat)”位于系统路径 (Windows 7) 中,“make”所在的Unix 实用程序也是如此。

当从 Windows 控制台运行“make”时,它会显示:

make: *** No targets.  Stop.
Run Code Online (Sandbox Code Playgroud)

从命令行使用显式文件名调用 pyuic4 是有效的。

我知道我可以自己指定任何目标文件,但如果可能的话我想避免这种情况。

有任何想法吗?

eri*_*ous 5

根据 kasterma 的评论,您需要告诉 make 要构建哪个目标,但您只提供了一个模式规则。这可以通过以下方式完成。

UIFILES := $(wildcard *.ui)
PYFILES := $(UIFILES:.ui=.py)

.PHONY: all
all: $(PYFILES)

%.py: %.ui
    pyuic4 $< --output $@
Run Code Online (Sandbox Code Playgroud)