Makefile Debug 调试输出变量值

$(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)

命令行选项

有时候,我们不想让我们的makefile中的规则执行起来,我们只想检查一下我们的命令,或是执行的序列。于是我们可以使用make命令的下述参数:

“-n” “--just-print” “--dry-run” “--recon” 不执行参数,这些参数只是打印命令,不管目标是否更新,把规则和连带规则下的命令打印出来,但不执行,这些参数对于我们调试makefile很有用处。

“-t” “--touch” 这个参数的意思就是把目标文件的时间更新,但不更改目标文件。也就是说,make假装编译目标,但不是真正的编译目标,只是把目标变成已编译过的状态。

“-q” “--question” 这个参数的行为是找目标的意思,也就是说,如果目标存在,那么其什么也不会输出,当然也不会执行编译,如果目标不存在,其会打印出一条出错信息。

“-W <file>;” “--what-if=<file>;” “--assume-new=<file>;” “--new-file=<file>;” 这个参数需要指定一个文件。一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件所发生的规则命令。

三个最适合用来调试的命令行选项:

--just-print(-n)

--print-database(-p)

--warn-undefined-variables

参考文章
Makefile常用调试方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章