Makefile里面打印信息

  Makefile的规则相对来说还是比较复杂的,上手不容易,没有系统研究过,往往搞不清楚状况。如果掌握了基本的调试手段,那对我们写出正确的Makefile会非常有帮助。而在Makefile中,最重要的调试手段莫过于输出信息。

  Makefile中需要打印信息,可以通过如下方法:

  $(info info text)、$(warning warning text)或者$(error error text)

  示例:

CXX = g++ 
CompileOpt = -g -std=gnu++11
LinkOpt = -lpthread  $(asan)

Target = main

$(Target) : main.o memory_leak.o
    $(CXX) main.o memory_leak.o -o $(Target) $(LinkOpt)
    $(info info text)
    $(warning warn text)
    $(warning $(asan))
    $(error error text)

main.o : main.cpp memory_leak.h
    $(CXX) -c $(CompileOpt) main.cpp

memory_leak.o : memory_leak.cpp memory_leak.h
    $(CXX) -c $(CompileOpt) memory_leak.cpp


clean:
    rm main.o memory_leak.o

  编译输出:

$ make asan='-fsanitize=leak -fsanitize=address'                                                                                                             
g++ -c -g -std=gnu++11 main.cpp
g++ -c -g -std=gnu++11 memory_leak.cpp
info text
Makefile:11: warn text
Makefile:11: -fsanitize=leak -fsanitize=address
Makefile:11: *** error text.  Stop.

  可以看到,info、warning、error三种输出各有不同,其中error输出甚至会中断编译过程。可以根据不同的需求,用不同的方式输出信息,写出满意的Makefile

posted @ 2019-03-26 13:48  溟漓  阅读(19562)  评论(0编辑  收藏  举报