Makefile make不检测源文件中的更改

Makefile make不检测源文件中的更改,makefile,Makefile,我有以下项目结构: ProjectDir | +---CurrentDir | Makefile | +---App1 | | Source1.cs | | Source2.cs | | | \---App2 | Source1.cs | Source2.cs | 我想在CurrentDir中构建所有应用程序。生成文件如下所示: APPS=App1.exe App2.exe all: $

我有以下项目结构:

ProjectDir
|           
+---CurrentDir
|       Makefile
|       
+---App1
|   |   Source1.cs
|   |   Source2.cs
|   |   
|
\---App2
    |   Source1.cs
    |   Source2.cs
    |
我想在
CurrentDir
中构建所有应用程序。生成文件如下所示:

APPS=App1.exe App2.exe

all: $(APPS)

$(APPS) : %.exe : $(wildcard ../%/*.cs) 
    csc /nologo /out:$@ ..\\$(basename $@)\\*.cs
应用程序的构建没有任何问题,但每当我更改某个源文件中的某些内容时,make都不会重建二进制文件(对“all”不做任何操作)

这是为什么?我如何解决这个问题?我猜这与通配符表达式有关。

函数在make解析时(当
%
不是特别的时候)被评估,并且试图全局化
。/%/*.cs
这自然是不匹配的。要想按照你所写的去做,你需要使用

也就是说,更手动地执行此操作可能更有用(但需要更多地重写makefile)。

请参阅。换分机就行了。
.SECONDEXPANSION:
$(APPS) : %.exe : $$(wildcard ../$$*/*.cs)