Makefile里面打印信息

Makefile里面打印信息

 

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

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

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

  示例:

Makefile里面打印信息
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
Makefile里面打印信息

  编译输出:

Makefile里面打印信息
$ 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.
Makefile里面打印信息

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

上一篇:Java线程池及其底层源码实现分析


下一篇:Qt+MSVC+VLD内存泄漏检测