为什么 nmake 在没有依赖项发生变化时执行 link 目标?
Why would nmake execute a link target when no dependents have changed?
我的 nmake makefile 的 link 目标总是被执行 - 即使自上次 nmake 运行 以来没有做任何更改。我不知道要在这里寻找什么,可能出了什么问题。 link.exe 是 运行 多余的,这很烦人。
这是我的 nmake makefile 的要点:
BINDIR=..\bin\x64\release
OBJS= \
$(BINDIR)\main.obj
{..}.cpp{$(BINDIR)}.obj:
cl.exe /c /Fo$(BINDIR)\ /Fd$(BINDIR)\ $<
app: $(OBJS)
link.exe $(CFLAGS) /out:$(BINDIR)\app.exe $(OBJS)
有人知道我可以找什么吗?
我自己回答这个问题,因为我刚刚找到了我遗漏的部分。
当我将 app
目标拆分为一个命令目标和一个无命令目标时,它工作正常:
app.exe: $(OBJS)
link.exe $(CFLAGS) /out:$(BINDIR)\app.exe $*
app: app.exe
我的 nmake makefile 的 link 目标总是被执行 - 即使自上次 nmake 运行 以来没有做任何更改。我不知道要在这里寻找什么,可能出了什么问题。 link.exe 是 运行 多余的,这很烦人。
这是我的 nmake makefile 的要点:
BINDIR=..\bin\x64\release
OBJS= \
$(BINDIR)\main.obj
{..}.cpp{$(BINDIR)}.obj:
cl.exe /c /Fo$(BINDIR)\ /Fd$(BINDIR)\ $<
app: $(OBJS)
link.exe $(CFLAGS) /out:$(BINDIR)\app.exe $(OBJS)
有人知道我可以找什么吗?
我自己回答这个问题,因为我刚刚找到了我遗漏的部分。
当我将 app
目标拆分为一个命令目标和一个无命令目标时,它工作正常:
app.exe: $(OBJS)
link.exe $(CFLAGS) /out:$(BINDIR)\app.exe $*
app: app.exe