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)