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