gpt4 book ai didi

nmake 推理规则仅限于深度为 1

转载 作者:行者123 更新时间:2023-12-04 18:34:48 25 4
gpt4 key购买 nike

我注意到了 nmake.exe将其推理规则搜索限制为一个丢失的文件。我发现网上没有提到这个问题。我错过了什么吗?

$ cat 生成文件
.后缀:.a .b .d .e

全部:abc.e

.a.b:
复制 $** $@

.b.d:
复制 $** $@

.d.e:
复制 $** $@

$ 触摸 abc.a

$nmake
NMAKE: fatal error U1073:不知道如何制作“abc.e”
停止。

$ nmake -n abc.a
'abc.a' 是最新的

$ nmake -n abc.b
复制 abc.a abc.b

$ nmake -n abc.d
NMAKE: fatal error U1073:不知道如何制作“abc.d”
停止。

这个相同的 Makefile 使用 GNU make 生成以下内容:

$ make -n
复制 abc* abc.b
复制 abc* abc.d
复制 abc* abc.e
rm abc.b abc.d

当然,$**宏和copy命令在 GNU make 中没有那么有用。 ;-)

你的版本nmake.exe处理这个更好吗?有魔法开关吗?或者它真的像看起来那样 splinter ?

最佳答案

这里的问题是跟踪构建过程中的多步骤操作。您的源文件会产生某种中间文件,这些中间文件又会产生最终的构建输出。在糟糕的世界中,您可能会对源文件进行更改,然后您的最终二进制文件仍然可以从中间文件的陈旧版本构建。显然,那会很糟糕。

GNU make 采用一次对整个依赖树进行建模的方法,并一直跟踪修改后的文件直到输出。如果 make 是您使用的唯一构建工具,那就太好了。如果您有非常大的项目,这不会很好地工作,因此您需要按特定顺序制作它们。如果 'make' 不支持构建过程的某些工具,这将无法正常工作,因此无论如何您都需要多次运行 make。

nmake.exe 采取最简单的方法:一次只执行一次。它假定它将成为更大工具链的一部分。因此,如果您有多次通过依赖项,则需要多次通过 nmake。如果您的构建过程需要 3 次以上的传递,则您可能正在做一件坏事,您应该修复您的过程。对于大声喊叫,如果您需要多次通过,只需编写一个脚本即可。

关于nmake 推理规则仅限于深度为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808674/

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