MSVS2012 c++ nmake 如何在子目录中的 makefile 上执行 运行 nmake?

MSVS2012 c++ nmake how do run nmake on a makefile in a subdirectory?

我有一个包含顶级 makefile 和三个子文件夹的项目,每个子文件夹中都有一个 makefile。

在普通的 makefile (gnu make) 中,我可以这样做:

# Just for me so I can read my own makefile -->  TARGET: DEPEND
_TARGET = $@
_DEPEND = $<

# Sub projects to build in dependency order
SUB_PROJECTS = folder2 folder1 folder3

.PHONY: $(SUB_PROJECTS)

all: $(SUB_PROJECTS)
@echo makeing all

$(SUB_PROJECTS):
@echo "*******************************"
@echo "*   MAKING: $(_TARGET)"
@echo "*******************************"
$(MAKE) -C $(_TARGET)
@echo

在这里我基本上是在子文件夹 "folder1".

中调用 make -C folder1 到 运行 make

所以我正在尝试将我的 gnu makefile 翻译成 nmake。在大多数情况下,我没有遇到太多麻烦(.phony 的东西与这里不同)。

但我似乎找不到在子文件夹上调用 nmake 的语法:

nmake folder1 不起作用。我查看了 nmake 的所有标志,但没有一个看起来很明显。 nmake 上的文档不容易浏览(即找到你想要的)。

我不相信 nmake 有类似 (gnu)make 的 -C 选项,你需要做类似

的事情
$(SUB_PROJECTS):
    cd $@
    $(MAKE) /$(MAKEFLAGS)
    cd $(MAKEDIR)

我刚刚发现这个 link:UsingNmake 这表明:

遍历目录"makefile"

 DIRS = \ 
         dir1 \ 
         dir2 \ 
         dir3

 all: $(DIRS)

 $(DIRS):
         pushd $@ & nmake & popd

它解释了为什么最好在一行中完成...