1、 文檔目標(biāo)
在嵌入式軟件開發(fā)流程中,對Keil MDK(Microcontroller Development Kit)工程執(zhí)行"clean targets"操作是維護(hù)代碼庫整潔性和確保編譯環(huán)境純凈度的重要步驟。通過外部腳本實(shí)現(xiàn)該操作,不僅能提升開發(fā)效率,還能避免手動操作中常見的路徑誤刪或配置殘留問題。
二、腳本實(shí)現(xiàn)方案
2.1 Windows批處理腳本實(shí)現(xiàn)
針對Windows開發(fā)環(huán)境,可編寫如下批處理腳本(clean_mdk.bat):
@echo off
setlocal
:: 配置參數(shù)
set PROJECT_FILE="C:pathtoproject.uvprojx"
set UV4_PATH="C:KeilUV
2、問題場景
在所有的大型項(xiàng)目管理上,都存在項(xiàng)目代碼管理系統(tǒng)。工程師可以將自己修改完的工程上傳到代碼管理平臺中。但是,編譯完后的工程會存在很多臨時(shí)文件和一些構(gòu)建過程中生成的文件,這些文件是不需要上傳到代碼管理平臺中的。通常的操作是通過在MDK中的Project->Clean Targets操作去清除這個(gè)不需要的文件(如圖2-1)。另外一種方法就是通過外部基本的方式去清除。

圖2-1
3、軟硬件環(huán)境
1)、軟件版本:Keil MDK 5.38a(非必需)
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無
4、解決方法
1)、創(chuàng)建一個(gè)txt文件,將文件的名字可以命名為"keilkill"或者自定義。然后,將文件擴(kuò)展名".txt"修改成".bat"
2)、腳本中想要實(shí)現(xiàn)對于臨時(shí)文件的刪除需要使用windows的命令“del”。
命令的語法是:del [Drive:][Path]FileName[ ...][/p] [/f] [/s] [/q] [/a[:attributes]]具體腳本內(nèi)容如下:腳本通過正則表達(dá)式去匹配所有需要刪除的文件的文件擴(kuò)展名。通過“/s”參數(shù)去保證從當(dāng)前目錄及其所有子目錄中刪除指定文件,并且在命令行窗口中顯示正在被刪除的文件名。最后用“exit”命令自動關(guān)閉命令行窗口,如果需要保留命令行窗口則可以使用“pause”命令(如圖4-1)。如果還需要填加其他文件的刪除可以自行參照下面腳步的寫法進(jìn)行添加。
(注:關(guān)于keil MDK所有生成的文件類型請參考:MDK的文件類型(官網(wǎng)))
del .bak /s ::備份文件
del .lst /s ::列表文件
del .lnp /s ::鏈接輸入文件
del .obj /s ::可重定位的對象文件
del .plg /s ::總結(jié)上次構(gòu)建過程的協(xié)議文件
del .tmp /s ::臨時(shí)文件
del .__i /s ::工程調(diào)用文件
del .crf /s ::包含瀏覽信息(定義、標(biāo)識符引用)的交叉引用文件。
del .o /s ::可重定位的對象文件。
del .d /s ::由ARMCC或GCC編譯器生成的依賴文件。
del .axf /s ::由鏈接器生成的絕對可執(zhí)行的目標(biāo)文件
del .dep /s ::目標(biāo)構(gòu)建的依賴文件。
del .htm /s ::鏈接器的清單文件,通常為構(gòu)建日志
del .sct /s ::鏈接器控制文件(分散加載)。
del .map /s ::由鏈接器生成的清單文件(或映射文件)。
exit ::執(zhí)行完命令后會自動關(guān)閉命令行窗口
:: pause ::如果需要保留命令行窗口請使用pause

圖4-1