Visual Studio 2019/2022构建前能否自动删除指定缓存文件?
解决方案
针对CMake生成的Visual Studio解决方案自动删除指定缓存文件的需求,有两种可落地的实现方式:
方法1:在CMake配置中添加清理规则(推荐)
直接在CMake规则中定义清理逻辑,每次生成VS解决方案都会自动继承配置,不会因为重新生成解决方案丢失设置:
- 在项目根目录的
CMakeLists.txt中添加以下代码,替换示例中的占位符为你实际的项目信息:
# 替换为你要删除的缓存文件/文件夹实际路径 set(TARGET_CACHE_FILE "${CMAKE_CURRENT_BINARY_DIR}/your_cache_file.cache") # 替换为你的项目构建目标名称 add_custom_command(TARGET your_project_target PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove -f ${TARGET_CACHE_FILE} COMMENT "Removing outdated cache file before build..." )
- 如果需要删除多个缓存文件,可以添加多条
remove命令,或者把所有缓存路径存到列表中遍历删除;如果要删除整个缓存文件夹,把remove -f换成remove_directory即可。 - 修改完
CMakeLists.txt后重新生成一次VS解决方案,后续所有构建操作都会自动在编译前删除旧缓存。
方法2:直接在Visual Studio中配置生成事件
如果不想修改CMake配置,可以直接在VS项目属性中添加临时清理规则:
- 右键解决方案面板中的对应项目(不是顶层解决方案),选择「属性」
- 在属性页顶部将「配置」选为「所有配置」、「平台」选为「所有平台」,保证配置对所有编译场景生效
- 依次展开「配置属性」→「生成事件」→「预生成事件」
- 在「命令行」输入框中填写删除命令,示例如下:
:: 单文件删除,路径带空格必须加双引号 del /f /q "C:\your_project_path\cache_file.cache" :: 如需删除整个文件夹用以下命令 :: rmdir /s /q "C:\your_project_path\cache_dir"
- 点击「确定」保存配置即可生效。
补充说明
如果只需要在执行「重新构建」操作时删除缓存,常规增量构建不删除的话,把上述配置中的「预生成事件」/PRE_BUILD改为「预重新生成事件」/PRE_REBUILD即可。
内容的提问来源于stack exchange,提问作者Louis Child
相关产品推荐
相关产品推荐

