0

我正在开发一个由许多项目和 makefile 组成的系统。每个 makefile 都包含来自其依赖项的 .inc 文件。如果缺少依赖项,它会抱怨并告诉用户首先编译依赖项。这部分工作正常。问题是干净的目标。

如果首先清理依赖项并删除它的 inc 文件(因为 inc 文件包含编译时选项和硬路径,我们更愿意删除它们),则 Makefile 无法加载 .inc 文件并中止。因此,确保我们拥有正确依赖项的机制不允许我们调用不需要依赖项的干净目标。

有没有办法根据规则包含或忽略 .inc 文件?

PS:由于我们已经使用“-”进行错误检查,所以这不是一个选项。

4

1 回答 1

2

防止清洁时包含的规范方法如下:

ifneq ($(MAKECMDGOALS),clean)
include $(some .inc files)
endif

如此处所述https://www.gnu.org/software/make/manual/make.html#Goals

尽管如果我理解正确,您遇到的错误不是因为包含失败的包含,您已经在使用它来抑制-include,而是因为您的 makefile 依赖于包含中的某些值。

为了帮助您解决问题,我们需要一些代码来演示问题。请阅读此处了解如何操作:https ://stackoverflow.com/help/minimal-reproducible-example和http://www.sscce.org/

于 2019-10-16T12:23:46.453 回答