【发布时间】:2012-07-18 04:04:04
【问题描述】:
我正在开发一个由许多项目和 makefile 组成的系统。每个 makefile 都包含来自其依赖项的 .inc 文件。如果缺少依赖项,它会抱怨并告诉用户首先编译依赖项。这部分工作正常。问题是干净的目标。
如果一个依赖项首先被清理并且它的 inc 文件被删除(因为 inc 文件包含编译时选项和硬路径,我们更愿意删除它们),那么 Makefile 无法加载 .inc 文件并中止。因此,确保我们拥有正确依赖项的机制不会让我们调用干净的目标——它不需要依赖项——。
有没有办法根据规则包含或忽略 .inc 文件?
PS:由于我们已经使用“-”进行错误检查,所以这不是一个选项。
【问题讨论】:
-
是的,可以,但是……为什么makefile要抱怨并告诉用户先编译依赖?为什么它不只是编译依赖项?如果您使用的是“-”(我假设您的意思是您的 makefile 包含像
-include foo.inc这样的指令),那么如果缺少所需的“.inc”文件,Make 会如何中止? -
这个项目真的很大,每个人都在他们孤立的环境中工作。所以每个makefile只负责项目的那一部分。 Makefiles 用于编译依赖项,但我们发现人们滥用它并且不关注全局依赖项。所以我们停了下来。是的,这就是我所说的“-”,如果包含失败,则应该来自该特定 inc 文件的版本变量为空。然后我们抱怨并中止。