子目录中的Makefile不工作

子目录中的Makefile不工作,makefile,Makefile,我有一个由主目录(project)和主目录中的子目录(add)构成的项目 我想在主目录project中运行一个makefile,它调用'add'子目录中的另一个makefile 但是,只有在从子目录手动调用makefile时,makefile才能正常工作。如果运行$(MAKE)-C add,将触发预处理器警告,并且文件不会编译。如果我在子目录中手动运行makefile,编译就会正常进行(这是应该的。我不知道为什么在使用外部目录中的makefile时会触发警告) 如何解决此问题,以便正确调用mak

我有一个由主目录(project)和主目录中的子目录(add)构成的项目

我想在主目录project中运行一个makefile,它调用'add'子目录中的另一个makefile

但是,只有在从子目录手动调用makefile时,makefile才能正常工作。如果运行$(MAKE)-C add,将触发预处理器警告,并且文件不会编译。如果我在子目录中手动运行makefile,编译就会正常进行(这是应该的。我不知道为什么在使用外部目录中的makefile时会触发警告)


如何解决此问题,以便正确调用makefile?

我们无法帮助您提供大量信息。很明显,有些东西是不同的,但有些东西不是make固有的,而是你的环境中我们无法猜测的东西。首先要做的是仔细检查make在
add
目录中直接运行时生成的编译器行,与make在
add
目录中运行时生成的编译器行相比,并确定它们之间的区别。最有可能的情况是,您在主make文件中设置的某个变量被导出到子make中并导致问题。您可能应该查看make文档,尤其是解释make变量(编译标志经常作为make变量传递)的章节获取它们的值以及子make调用如何影响变量。作为旁注,这不是使用递归
make
调用实现所需的最佳方法。最好使用非递归方法。对于
GNU make
,我建议使用我的模板库
prorab