高效开发利器:Visual Studio 2022与Qt结合实战详解

高效开发利器:Visual Studio 2022与Qt结合实战详解

0、背景

最近开发一个控制策略相关的代码需要进行本地测试,刚好有同事写了一个仿真测试工具,于是乎拿来一个源代码进行编译测试验证。

1、阻碍

不出意外地,拿到源码的我懵逼了,这个代码它是用VS进行编码、编译运行的,而我本地一直都是VS Code + Qt的方式进行开发,现在需要把项目挪到VS里面进行编译,然后才能进行测试。看我如何一步一步地解决掉它。

果不其然,我直接用VS打开项目,编译直接报错。

2、找不到Qt.props

编译执行报错:找不到导入的项目"D:\xxx\sim-curve\sim-curve\QtMsBuild\Qt.props"。请确认 Import 声明"$(QtMsBuild)\Qt.props"中计算结果为"D:\xxx\sim-curve\sim-curve\QtMsBuild\Qt.props"的表达式正确无误且该文件位于磁盘上。

上网找了资料,发现就是因为当前我的VS不支持Qt组件,如何鉴别自己当前环境是否有Qt支持组件,可以全局搜索:QtMsBuild这个目录,一般支持的话会默认带有这个目录,有几个关键的文件:

powershell 复制代码
Qt.props
Qt.targets
qt_private.props

如果有则不会有这个问题,如果没有则需要安装。

安装也很简单,可以直接在VS扩展中搜索:Qt Visual Studio Tools,然后进行安装,安装完成后重新打开VS即可。但我是采用网页版进行下载:Qt Visual Studio Tools下载过程中记得关掉VS,安装后再重新打开就可以了。

3、适配修改vcxproj文件

安装完Qt Visual Studio Tools后,全局搜索:QtMsBuild,修改对应指定的路径:

powershell 复制代码
<QtMsBuild>你本地的路径\QtMsBuild</QtMsBuild>

最好不要带有中文,一般默认的路径是:

powershell 复制代码
C:\Users\<你的用户名>\AppData\Local\QtMsBuild\

如果一定带有中文,注意用转义反斜杠隔离开来,要写成绝对路径

4、报错匹配不到Qt版本

具体报错信息:

powershell 复制代码
There's no Qt version assigned to project sim-curve.vcxproj for configuration Debug/x64.

根因:一般是当前vcxproj文件里面QtInstall配置的Qt环境跟当前本地实际的不一致导致。所以找到对应的Qt版本把它改成你本地的就可以了

PS:VS里面配置记得要把Qt Version配置好。

powershell 复制代码
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
    <QtInstall>6.8.3_msvc2022_64</QtInstall>
    <QtModules>core;gui;network;widgets</QtModules>
    <QtBuildConfig>debug</QtBuildConfig>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
    <QtInstall>6.8.3_msvc2022_64</QtInstall>
    <QtModules>core;network;gui;widgets</QtModules>
    <QtBuildConfig>release</QtBuildConfig>
  </PropertyGroup>

5、VS项目中的配置设置

由于当前我的项目中用到了协议,所以我依赖Qt NetWork,需要把Qt的依赖库包含进去,需要这么修改:

同时C++包含依赖目录里面也需要添加对应Qt对应的路径:

同时链接器里面需要添加lib库路径:

6、大功告成

走完上面几步后,编译顺利解决:

后面就可以正常使用调试啦~~~

相关推荐
姓刘的哦14 分钟前
Qt自定义控件
开发语言·qt
AlanW1 小时前
Qt Model/View 框架完全指南:从入门到性能优化
qt
艾莉丝努力练剑3 小时前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
Z文的博客4 小时前
嵌入式 ARM 设备交叉编译 mosquitto 2.0.20 (完整 TLS 支持) 详细教程 TRAE全程辅助,没敲一行代码
qt·mqtt·嵌入式·ai编程·mosquitto·嵌入式linux·trae
特立独行的猫a4 小时前
HarmonyOS 鸿蒙PC端 Qt 应用开发:第三方 Qt 开源软件移植指南
qt·harmonyos·鸿蒙·鸿蒙pc
计算机安禾13 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
无限进步_13 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
计算机安禾14 小时前
【数据结构与算法】第35篇:归并排序与基数排序
c语言·数据结构·vscode·算法·排序算法·哈希算法·visual studio
C++ 老炮儿的技术栈14 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
獨枭17 小时前
Visual Studio 打开 .vdproj 显示“不兼容”的问题分析与解决
ide·visual studio