gpt4 book ai didi

makefile - 忽略不存在的先决条件

转载 作者:行者123 更新时间:2023-12-04 22:46:28 25 4
gpt4 key购买 nike

make 继续构建并表示当我的依赖文件说对象依赖于已移动的头文件时一切都是最新的。

如果运行 make -d 来捕获评估,我会看到:

Considering target file `../build/out/src/manager.o'.
Looking for an implicit rule for `../build/out/src/manager.o'.
No implicit rule found for `../build/out/src/manager.o'.
Pruning file `../product/build/config/product.conf'.
Pruning file `../build/out/opt_cc.txt'.
Considering target file `../mem/src/manager.c'.
Looking for an implicit rule for `../mem/src/manager.c'.
No implicit rule found for `../mem/src/manager.c'.
Finished prerequisites of target file `../mem/src/manager.c'.
No need to remake target `../mem/src/manager.c'.
Pruning file `../mem/mem.h'.
Finished prerequisites of target file `../build/out/src/manager.o'.
Prerequisite `../product/build/config/product.conf' is older than target `../build/out/src/manager.o'.
Prerequisite `../build/out/opt_cc.txt' is older than target `../build/out/src/manager.o'.
Prerequisite `../mem/src/manager.c' is older than target `../build/out/src/manager.o'.
Prerequisite `../mem/mem.h' of target `../build/out/src/manager.o' does not exist.
../build/out/src/manager.o'.
Prerequisite `../mem/mem_in.h' is older than target `../build/out/src/manager.o'.
No need to remake target `../build/out/src/manager.o'.

因此,make 知道需要该文件并且该文件不存在,但不会尝试根据规则创建它或失败。
Prerequisite `../mem/mem.h' of target `../build/out/src/manager.o' does not exist.

为什么会这样,我怎样才能不忽略这条规则?

最佳答案

很可能您已经实现了一种自动依赖项生成方法,通过为该文件定义一个没有规则的目标,该方法告诉 make 从根本上忽略这些文件(如果它们不存在)。当我有这个 makefile 时:

foo: foo.h ; @echo make $@ from $^

没有 foo.h 然后 make 告诉我:
$ make
make: **** No rule to make target 'foo.h', needed by 'foo'. Stop.

但是,如果我有这个 makefile:
foo: foo.h ; @echo make $@ from $^
foo.h:

现在 make 非常高兴:
$ make
make foo from foo.h

这是许多自动依赖生成实用程序所依赖的记录行为:如果您查看生成的依赖生成文件,您将看到每个头文件的空目标之一。

这个想法是,给定正确的依赖信息,不应该在不修改其他源文件或头文件的情况下重命名或删除头文件,这将导致无论如何重建目标文件(因此为下一个正确重新创建依赖信息)时间)。

关于makefile - 忽略不存在的先决条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23964228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com