首页 > 解决方案 > 使通配符目标始终得到无事可做

问题描述

我编写了一个 makefile,其中包含一些用于构建和运行的通配符目标。我的makefile内容如下。

ALL_EXES=$(shell ls *.exe 2>/dev/null)
.PHONY:  all clean $(ALL_EXES) foo

CC=gcc
CFLAGS=-g -Wall
GTKFLAGS=$(shell pkg-config --cflags gtk+-3.0)
GTKLIBS=$(shell pkg-config --libs gtk+-3.0)
PWD=$(shell pwd)

clean:
    @echo cleanning
    $(shell sh -c "rm *.exe 2>/dev/null")

%: %.c
    $(CC) $(GTKFLAGS) -o $@ $< $(GTKLIBS) $(CFLAGS) 

%.exe: %
    @echo running $@
    $(shell sh -c "$(PWD)/$@")

我可以make some-program成功运行,但是运行时总是会发生“some-program.exe”的任何事情make some-program.exe

标签: windowsgcccmdmakefilemsys2

解决方案


该行%: %.c应该是,因为这是基于源%.exe: %.c创建文件的规则。.exe.c

该行%.exe: %应该是其他内容,例如run: foo.exe.


推荐阅读