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文件。

相关推荐
爱上妖精的尾巴10 小时前
5-22 WPS JS宏reduce数组的归并迭代应用(实例:提取最大最小值的记录)
服务器·前端·javascript·笔记·wps·js宏
草莓熊Lotso10 小时前
《C++ Stack 与 Queue 完全使用指南:基础操作 + 经典场景 + 实战习题》
开发语言·c++·算法
敲上瘾10 小时前
单序列和双序列问题——动态规划
c++·算法·动态规划
ajassi200010 小时前
开源 C++ QT QML 开发(二十二)多媒体--ffmpeg编码和录像
c++·qt·开源
爱因斯坦乐12 小时前
【vue】I18N国际化管理系统
前端·javascript·vue.js·笔记·前端框架
小糖学代码13 小时前
Linux:11.线程概念与控制
linux·服务器·c语言·开发语言·c++
Ro Jace13 小时前
模式识别与机器学习课程笔记(4):线性判决函数
人工智能·笔记·机器学习
Rousson13 小时前
硬件学习笔记--82 连接器的选用原则与流程
笔记·单片机·学习
Larry_Yanan15 小时前
QML学习笔记(四十)QML的ApplicationWindow和StackView
c++·笔记·qt·学习·ui
Kratzdisteln18 小时前
【C语言】Dev-C++如何编译C语言程序?从安装到运行一步到位
c语言·c++