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常用調試方法

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