如何在没有错误消息的情况下中止makefile

如何在没有错误消息的情况下中止makefile,makefile,gnu-make,abort,Makefile,Gnu Make,Abort,如果当前目标中满足某些条件,我如何从其他目标中止makefile 例如: Step01: @# Do something Step02: Step01_Output @# Check that Step01_output meet certain condition, otherwise, abort Step03: Step02 @# Do somethings (of course if did not abort in Step02) # And so on

如果当前目标中满足某些条件,我如何从其他目标中止makefile

例如:

Step01:
    @# Do something

Step02: Step01_Output
    @# Check that Step01_output meet certain condition, otherwise, abort

Step03: Step02
    @# Do somethings (of course if did not abort in Step02)

# And so on
我尝试使用状态为0==>的“退出”,但它仍然继续! 我尝试使用“exit 1”或其他exist status==>它将中止,但在输出时给出错误消息。 我想中止,但仍然不想在调用shell时给出错误消息。 我还尝试在步骤02中设置env变量,并在步骤03和之后在if检查中设置env变量,如下所示:

ifneq ($(ToAbort),1) 
Step03:
...
StepN

endif
不幸的是,make甚至没有查看条件,或者变量值没有在目标之间传递


有什么想法吗?可能是通过添加额外的目标还是这样?

我认为只有在创建所有目标或出现任何错误时才能退出。
顺便说一下,命令是在子shell中运行的,因此使用“exit”不会导致make退出。

我认为只有在创建了所有目标或出现任何错误时,make才会退出。
顺便说一下,命令是在子shell中运行的,因此使用“exit”不会导致make退出。

不确定您的想法是否正确。 将工作的挑选留待决定

但是,, 您可以用一点shell和递归make来表达您的请求(对不起)。 你想表达“如果a完成时有/没有错误,那么我们就完成了,否则继续b。”

注意那些符号。
if命令3;然后${MAKE}Step02;fi
不执行您想要的操作。 如果制造失败, 您不想继续进入command4


另外,如果这些步骤不是真实的文件,不要忘记将它们标记为虚假的。

不确定您在这一点上的想法是否正确。 将工作的挑选留待决定

但是,, 您可以用一点shell和递归make来表达您的请求(对不起)。 你想表达“如果a完成时有/没有错误,那么我们就完成了,否则继续b。”

注意那些符号。
if命令3;然后${MAKE}Step02;fi
不执行您想要的操作。 如果制造失败, 您不想继续进入command4


另外,如果这些步骤不是真实文件,请不要忘记将其标记为虚假文件。

请提供真实示例,而不是伪代码,这可能是错误的。请提供真实示例,而不是伪代码,这可能是错误的。
Step01:
    command1
    command2
    command3 && ${MAKE} Step02
    command4

Step02:
    cmd5
    cmd6 && ${MAKE} Step03

⋮