GNU 制作空配方与无配方

gre*_*iod 5 gnu makefile recipe rule

查看GNU make manual空配方和无配方之间究竟有什么区别(例如,请参阅没有配方或先决条件的规则中的一个实例)?更重要的是,什么时候应该使用/避免这两种食谱中的每一种?

在我目前的理解中,应该始终使用

target: ;
Run Code Online (Sandbox Code Playgroud)

因为有时一个隐含的规则有可能会破坏一个人的目的,没有规则

Mad*_*ist 5

给定目标只能有一个配方。如果您声明一个空配方,那么您现在已经为该目标提供了该配方,并且不会通过隐式规则搜索它。另外,如果你尝试给同一个目标另一个配方,那么 make 会抱怨。

“无配方”只是意味着您要向现有目标添加更多先决条件,或者,如果您没有列出先决条件,您只是通知 make 这是您感兴趣的目标。但您并没有覆盖任何先决条件make 的食谱查找将在其他地方进行。

绝对不应该总是使用其中之一:您使用哪一个取决于您想要实现的目标。

当你说“没有规则”的目的失败时,我不知道你的意思,所以我无法回应……当你说“没有规则”时,你想达到什么目的?