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