VSCode+MSVC+Qmake环境搭建笔记

文章目录

  • 一 前言
  • 二 环境搭建
    • 2.1 设置环境变量
      • 2.1.1 Qmake
      • 2.1.2 MSVC
      • 2.1.2 QT环境变量
    • 2.2 VSCode C++环境配置
  • 三 配置tasks.json
    • 3.1 任务配置
  • 四 运行
    • 4.1 任务选择

一 前言

最近的工作内容是开发QT的插件,公司的插件框架都是基于vs2017+MSVC+Qmake搭建的,由于QT的官方IDE太难用了,自己又比较习惯使用VSCode了,所以打算通过VSCode来进行开发。在网上搜索了不少文章来看,大部分都是使用Cmake或者MinGW来进行配置的,竟然没有一篇讲这三个组合的详细配置文章,真是醉了。经过一番摸索,终于配置成功了,记录一下配置过程,方便以后查阅。

二 环境搭建

2.1 设置环境变量

2.1.1 Qmake

设置好Qmake的环境变量,目录参考如下:

复制代码
D:\QT5.14.2\5.14.2\msvc2017_64\bin

配置好后可以在终端中使用qmake --version来查看是否配置成功。

2.1.2 MSVC

构建时会调用MSVC来进行编译,由于后续的构建都是在终端环境下运行的,需要我们提前设置好MSVC的环境变量,目录参考如下:

复制代码
D:\VS2017\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

注意这里QT的版本和MSVC的版本要对应,x86就都是x86,x64就都是x64。

我是先在QT Creator中跑通可以构建项目之后再来做Vscode的配置的,所以配置的版本是和QT里用的一样的。这里怎么查看应该使用那个版本呢?

打开工具-选项界面,如下图所示,一般使用的就是这个默认的套件版本。像我这里使用的就是64位的MSVC2017。

切换到编译器可以看到当前使用的编译器的本地地址。

2.1.2 QT环境变量

目录参考如下:

复制代码
D:\QT5.14.2\Tools\QtCreator\bin

配置好所有的环境变量之后,一定要完全关闭VSCode再重新打开刷新一下环境变量,要不然会找不到cl.exe,恶心我一个多小时。

2.2 VSCode C++环境配置

在VSCode里面安装好C++插件后,Ctrl+Shift+P打开命令面板,输入C/C++: Edit Configurations (UI)打开配置界面:

配置名称可以新建一个,根据不同的项目使用不同的配置,下面配置的这些都是服务于编译器的,和项目构建无关,着急可以忽略。编译器路径和我们前面设置的MSVC路径一致,我这里不一样也无所谓,主要是为了让vscode不飘红。

下面这两个配置第一个根据自己用的机器选择,我这里用的是amd的cpu,所以选择amd64,第二个配置是为了让IDE识别QT的头文件路径,避免飘红。

vscode中的C++配置好后,我这个项目切换为GB2312编码格式,就不会飘红了,头文件一路点到最底层的QT库文件下,可以看见与配置的目录时一致的。

三 配置tasks.json

3.1 任务配置

我自己个人的开发需求是有一个A目录,里面存放各种库文件和头文件,A目录下有各种模块文件夹,我在开发的时候工作目录在A目录下,开发各种模块的时候就比较好切换参考。还有tasks.json是一个项目一个,以A目录建立项目就不用每次做新插件都要重新粘贴一下tasks.json的内容了。

下面我写的这个就是我个人的配置,大家可以根据自己的需求进行修改,我这里是先获取去编译哪一个插件,关于插件项目名的地方是一个变量,有默认值,也可以命令行输入。

新建一个在插件文件夹下的build目录,在build目录下运行qmake生成Makefile,最后调用jom进行编译,jom是QT的一个用来加速编译的库,下面调用的还是MSVC。

在调用MSVC之前要在命令行下设置一些变量,需要运行一下vcvarsall.bat脚本,脚本路径根据自己安装的VS版本进行修改。

json 复制代码
{
    "version": "2.0.0",
    "inputs": [
        {
            "id": "projectName",
            "description": "Enter the project folder name",
            "default": "RollCallSelfCheck",
            "type": "promptString"
        }
    ],
    "tasks": [
        {
            "label": "mkdir",
            "type": "shell",
            "command": "powershell.exe",
            "args": [
                "-Command",
                "New-Item -ItemType Directory -Force '${workspaceFolder}/${input:projectName}/build'"
            ]
        },
        {
            "label": "QmakeProject",
            "type": "shell",
            "command": "qmake.exe",
            "args": [
                "../${input:projectName}.pro",
                "-spec",
                "win32-msvc",
                "CONFIG+=debug",
                "CONFIG+=qml_debug"
            ],
            "options": {
                "cwd": "${workspaceFolder}/${input:projectName}/build"
            },
            "dependsOn": [
                "mkdir"
            ],
            "group": "build"
        },
        {
            "label": "MakeProject",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                "call \"D:\\VS2017\\VC\\Auxiliary\\Build\\vcvarsall.bat\" x64 && cd /d \"${workspaceFolder}\\${input:projectName}\\build\" && jom.exe -f Makefile.Release"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "dependsOn": [
                "QmakeProject"
            ],
            "group": "build"
        }
    ]
}

四 运行

4.1 任务选择

配置好后选择运行上方菜单中的终端-运行选择我们写好的任务就可以构建项目了,构建好后的文件会放在插件上级目录下的bin目录中,bin目录下有debug和release两个目录,分别存放调试版和发布版的dll文件。

相关推荐
岑梓铭2 小时前
《考研408数据结构》第二章《线性表(顺序表、链表)》复习笔记
数据结构·笔记·考研
林炳然3 小时前
将软件从C盘迁移至D盘:释放系统盘空间的终极指南
笔记
耿直小伙3 小时前
UI界面点击按钮一直转圈假死
c++·ui
我是华为OD~HR~栗栗呀3 小时前
测试转C++开发面经(华为OD)
java·c++·后端·python·华为od·华为·面试
Source.Liu3 小时前
mdBook 开源笔记
笔记·rust·markdown
qiu_zhongya3 小时前
iree 用C++来运行Qwen 2.5 0.5b
开发语言·c++·人工智能
汪宁宇3 小时前
giflib5.2.2 在Qt与VS C++中实现Gif缩放示例
开发语言·c++·qt
啊?啊?3 小时前
C/C++练手小项目之倒计时与下载进度条模拟
c语言·开发语言·c++
_dindong3 小时前
Linux系统编程:线程概念
linux·运维·笔记·学习