https://www.cnblogs.com/AP0904225/p/5936465.html
https://www.cnblogs.com/lidabo/p/4945678.html
Makefile第二讲:打印出内容和使用变量
摘要 `@echo "开始生成最终执行文件,请稍候..."`这一句便是将一条信息输出到终端,为何前边有个`@`符号呢?有了这个符号该命令本身就不会输出到终端(不理解,自己去掉或者加上`@`符号试试),实验证明,字符串可以不加引号。 看到`OBJS = main.o`了吗?这就是变量的定义,变量定义遵循一般语言的变量命名规则,可以是`_`和`$`开头,变量的值无论是字符串还是什么,都可以不要引号;有一种情况必须不要引号,就像上例这种,具体的....自己尝试吧。
Makefile
main.cpp
#include <iostream> using namespace std; int main() { cout <<"Hello makefile"; return 0; }makefile(还是第一节中的代码,稍作修改)
OBJS = main.o test:$(OBJS) @echo "开始生成最终执行文件,请稍候..." g++ main.o -o test main.o:main.cpp g++ -c main.cpp -o main.o clean: rm main.o test @echo "开始生成最终执行文件,请稍候..."这一句便是将一条信息输出到终端,为何前边有个@符号呢?有了这个符号该命令本身就不会输出到终端(不理解,自己去掉或者加上@符号试试),实验证明,字符串可以不加引号。看到OBJS = main.o了吗?这就是变量的定义,变量定义遵循一般语言的变量命名规则,可以是_和$开头,变量的值无论是字符串还是什么,都可以不要引号;有一种情况必须不要引号,就像上例这种,具体的….自己尝试吧。$(OBJS)这是对变量的调用。还可以把shell命令的返回值作赋给变量,例如将当前目录的路径赋值给变量:CURRENT_DIR = $(shell pwd)
https://blog.csdn.net/freud_lv/article/details/71498125
$(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量 $(warning ST40_IMPORTS is $(ST40_IMPORTS)) 变量名,一定要加括号。不加的话,可以发现前面都无法输出变量的值。 1、输出打印信息的方法是:$(warning xxxxx),$(error xxxxx) 2、输出打印变量值的方法是:$(warning $(XXX)) 在makefile中打印警告或者错误消息的方法: $(warning xxxxx)或者$(error xxxxx) 输出变量方式为: $(warning $(XXX))
https://blog.csdn.net/as520213211314/article/details/78190224
$(warning $(XXX)) 打印变量的值
1,使用info/warning/error增加调试信息 方法1: $(info, "here add the debug info") 但是此不能打印出.mk的行号
方法2: $(warning "here add the debug info") 方法3: $(error "error: this will stop the compile") 这个可以停止当前makefile的编译
方法4: 打印变量的值 $(info $(TARGET_DEVICE) ) 2,使用echo增加调试信息(echo只能在target:后面的语句中使用,且前面是个TAB) 方法1: @echo "start the compilexxxxxxxxxxxxxxxxxxxxxxx"
方法2: @echo $(files)
