如标题,进行项目清理步骤,使用Qt自带的构建步骤完成功能
在cmd下输入以下指令可以清理相应的文件:
for \r %%i in (*.obj,*.cpp,*.h,*.exp,*.user,*.aps,*.idb,*.dep,*.opt,*.plg,*.ipdb,*.ilk,*.iobj,clean.cmd) do del \s \f \q "%%i"
如果直接在构建步骤中添加,编译时会有如下提示:
12:16:58: 无法启动进程"for \r %%i in (.obj,.cpp,.h,.exp,.user,.aps,.idb,.dep,.opt,.plg,.ipdb,.ilk,*.iobj,clean.cmd) do del \s \f \q “%%i”"
Error while building/deploying project TestUI_Alg (kit: Qt5.12.4_MSVC2017_64bit)
When executing step “自定义进程步骤”
所以需要将该方法打包成 bat 或者 exe 的方式,以下演示bat和exe两种方式。
bat 方式清理文件
1.将for /r %%i in (.obj,.cpp,.h,.exp,.user,.aps,.idb,.dep,.opt,.plg,.ipdb,.ilk,*.iobj) do del /s /f /q “%%i” 写入1.cmd
2.构建步骤中添加自定义步骤
命令:1.cmd所在文件
参数:
工作目录:%{buildDir}%{CurrentBuild:Type}
工作目录是需要删除文件所在的目录,所以一定要填对
运行看看效果:
可能图片有点模糊,可看如下:
12:35:15: 进程"E:\QT5.12\Tools\QtCreator\bin\jom.exe"正常退出。
12:35:15: 正在启动 "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\1.cmd"
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>for /R %i in (*.obj *.cpp *.h *.exp *.user *.aps *.idb *.dep *.opt *.plg *.ipdb *.ilk *.iobj clean.cmd) do del /s /f /q "%i"
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\AOISerTest.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\AOISerTest.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\extendwindow.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\extendwindow.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\getssctdb.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\getssctdb.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\IOCOM.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\IOCOM.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\labelex.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\labelex.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\mainwindow.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\mainwindow.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\moc_extendwindow.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\moc_extendwindow.obj
D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release>del /s /f /q "D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\moc_labelex.obj"
删除文件 - D:\AOI-Project\FA_AOI\TestUI-FA_AOI-AlgThread\Build-Qt5_12_4_MSVC2017_64bit-release\release\moc_labelex.obj
exe 方式清理文件
exe的方式或bat方式类似,就是将bat中的内容写到exe中,然后使用自定义步骤进行执行,如下只给出exe内容
#include <iostream>
void WriteLog()
{
FILE *fp = nullptr;
fopen_s(&fp, "clean.cmd", "w");
if (fp == nullptr) {
return;
}
else {
fprintf_s(fp, " for /r %%%%i in (*.obj,*.cpp,*.h,*.exp,*.user,*.aps,*.idb,*.dep,*.opt,*.plg,*.ipdb,*.ilk,*.iobj,clean.cmd) do del /s /f /q \"%%%%i\"");
fflush(fp);
fclose(fp);
}
}
void main()
{
WriteLog();
system("clean.cmd");
}