更新VS 2019 16.11.1后Qt CMake项目调试时不自动构建如何解决
将Visual Studio 2019更新到16.11.1版本后,调试项目时不再自动执行构建流程,必须手动执行构建后才能启动调试。我已检查相关设置,
Build when project is out of date选项已选择为Always build,各项配置看起来均正常。请问是否有人遇到过同类问题,有什么可行的解决方案?还有哪些其他设置可能会阻止自动构建生效?我使用的是基于CMake的Qt项目。
可行解决方案
- 清理CMake缓存重生成:关闭Visual Studio,删除项目根目录下默认生成的
out文件夹,重启VS重新加载项目,完成首次完整构建后再测试调试触发自动构建的逻辑 - 更新Qt VS Tools插件:VS 16.11.x版本与旧版Qt VS Tools存在兼容性缺陷,将插件更新到适配VS2019的最新兼容版本,重启VS后重新关联项目对应的Qt版本即可
- 重置CMake项目构建配置:右键项目根目录的CMakeLists.txt,选择
CMake设置,确认配置类型、工具集、Qt路径等参数和当前环境匹配,删除所有自定义的构建命令覆盖规则,恢复默认的构建触发逻辑
可能阻止自动构建生效的排查项
- 检查顶部工具栏生成选项,确认当前选中的不是
仅生成启动项目,需开启关联依赖项的自动生成 - 排查项目内所有文件的时间戳:如果源码、CMakeLists.txt、Qt的.ui/.qrc/.pri等文件的修改时间晚于当前系统时间,会导致增量构建判断失效,重新保存所有异常时间的文件即可恢复
- 校验构建输出路径权限:确认CMake设置的构建输出路径(默认
out/build/[配置名])对当前用户开放读写权限,无写入权限会导致构建校验时无法更新标记文件,使VS误判项目始终为最新状态 - 检查VS全局构建配置:进入
工具 → 选项 → 项目和解决方案 → 生成并运行,除项目过期时生成选择始终生成外,需确认运行时仅生成启动项目和依赖项未被勾选 - 排查CMakeLists.txt规则:确认没有配置
CMAKE_SKIP_BUILD_RPATH这类跳过构建校验的参数,也没有自定义add_custom_command规则错误标记输出文件为始终最新,干扰增量构建判断
内容的提问来源于stack exchange,提问作者Miziol
相关产品推荐
相关产品推荐

