如何捕获命令错误并在 makefile 中继续编译?

Qiy*_* Li 6 compiler-errors makefile out-of-memory

例如,在编译过程中会产生一个错误 L6220E(因为我使用的是 ARM 编译器,这个错误标志表示内部闪存不足)。我想要做的是即使产生了错误也继续编译。有什么办法可以捕获命令错误并运行其他命令?喜欢,

normal_target:
             gcc -o main main.c    (this will generate error)

ifeq($(error),L6220E):
             gcc -o ...
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

Jen*_*ens 10

您可以在任何命令前加上 a-来表示make此命令可以失败:

normal_target:
         -gcc -o main main.c
         next command here
Run Code Online (Sandbox Code Playgroud)

另一种方法是简单地测试命令中的失败:

normal_target:
         if gcc -o main main.c; then \
            echo succeeded; \
         else \
            echo compilation failed; \
            gcc -o ...; \
         fi
Run Code Online (Sandbox Code Playgroud)