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

