当有变化时,如何在调用子构建时检查依赖项?

Zxa*_*aos 3 makefile multiple-makefiles

如果我有一个调用另一个makefile的makefile,如何让master makefile正确检查下级makefile的依赖项是否已更改?

例如,如果我有规则

server:
     @cd $(SERVERDIR) && $(MAKE)
Run Code Online (Sandbox Code Playgroud)

这会在我构建可执行文件"server"的子目录中调用make.但是,如果我更改组成服务器的其中一个文件,则父make不会看到更改并拒绝重建服务器 - "make:`server'是最新的."

如何让master makefile正确检测其中一个相关文件(例如$(SERVERDIR)/server.c)的变化?

mby*_*215 7

看起来你想要使用虚假的目标

.PHONY: server
server:
     @cd $(SERVERDIR) && $(MAKE)
Run Code Online (Sandbox Code Playgroud)

还有的假目标的详细说明在这里,但简短的描述是你告诉生成文件永远不会有一个与此服务器的目标相对应的文件,因此它不会考虑服务器上的日期是否有目录中的文件名为server.

  • 这是您的子makefile的责任. (2认同)