配置VsCode的QT工程

VsCode + qmake

环境(Environment):

Windows11

Qt5.12.11+ MinGW64 编译套件

VsCode (version = 1.78.2)


一、命令行编译运行QT程序

在使用VsCode配置QT程序之前,我们应该需要知道如何通过命令行来编译以及运行QT工程。

下面是我个人常用的方式,可以参考:

1. 使用QtCreator创建一个qmake工程。

2. 使用qmake命令生成Makefile文件

  • 打开工程目录 (.pro所以位置)

  • 在工程目录下进入终端(当然也可以先打开终端,然后cd 到你的工程下)

  • 创建一个build文件夹,这样可以避免编译生成的文件散落在工程目录下

  • 进入到build文件夹

  • 执行qmake ../XXX.pro (因为.pro文件是在build文件夹的上一层)

  • 执行mingw32-make -j16 debug

  • 进入build下的debug文件夹,此时可以看到生成了xxxx.exe可执行文件

  • 双击 xxx.exe 运行,自此结束。

    可能遇到的错误:

    PS D:\Desktop> qmake ../Demo.pro
    qmake : 无法将“qmake”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名
    称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    如果你遇到了上面情况,请注意检查是否添加下面两条环境变量

    • qmake.exe 所在的bin目录

    • mingw32-make.exe 所在的bin目录


二、配置VsCode+QT

1.安装VsCode插件

  • 确保你的VsCode程序中安装有C\C++ Extension Pack插件,如下图

2.使用VsCode打开你的QT工程

  • 演示如下

    打开之后,点开main.cpp,此时应该会看到,头文件的部分报错。请看下面第2点解决。

2.添加包含的头文件路径,即include文件夹所在位置

如果指定头文件的路径,VsCode就不知道你的代码里面的头文件是在哪里,导致代码报红

这是我QT的mingw64编译套件对应的头文件路径 D:\\Qt\\Qt5.12.11\\5.12.11\\mingw73_64\\include\\**

请根据自己的来修改。

  • 记得把路径的\更换成\\或者用/表示

  • 记得在include后面加上两个*,表示遍历这个目录下的所有头文件(不知道的话,照着做就行了)

    演示如下:

3.配置launch.json和tasks.json

  • .vscode文件夹下创建tasks.json(如果没有这个目录就自己建一个)

  • 将下面内容粘贴到tasks.json文件里

    {
    "tasks": [ // 任务:qmake 根据.pro文件生成 Makefile,通常是.pro文件改动后才需要执行
    // 这个任务的执行等效命令行 >> cd build
    // >> qmake ../Demo.pro
    {
    "type": "shell",
    "label": "qmake",
    "options": { // cwd的意思是执行这个命令的时候,所在的目录
    // 这里我们指定为工程目录下的build文件夹,这样的话
    // 当执行qmake的时候,产生的中间文件就在build文件夹下面了
    "cwd": "${workspaceFolder}\\build"
    },
    "command": "qmake", //command 命令,这个不用说了
    "args": [
    // qmake后面跟的参数,因为上面cwd配置为build目录,
    // 所以.pro文件应该在build的上一级,所以使用../*.pro
    "../*.pro"
    ],
    }, // 任务:编译 每次修改代码后都需要执行
    // 任务等效命令行 >>make -j16 debug
    {
    "label": "make",
    "options": {
    "cwd": "${workspaceFolder}\\build"
    },
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "command": "make",
    "args": [
    "-j16",
    "debug"
    ],
    "dependsOn": [
    //"qmake"
    ]
    }, // 任务:清理 等效命令行 make clean
    {
    "label": "clean",
    "options": {
    "cwd": "${workspaceFolder}\\build"
    },
    "command": "make",
    "args": [
    "clean"
    ]
    }, // 运行程序
    {
    "label": "run",
    "options": {
    "cwd": "${workspaceFolder}\\build\\debug"
    },
    "command": "${workspaceFolderBasename}.exe",
    "args": [
    ""
    ],
    "dependsOn": [
    "make"
    ]
    }
    ],
    "version": "2.0.0"
    }

    配置tasks.json演示如下:

  • 在.vscode文件夹下新建launch.json 并且粘贴下面内容

    {
    "version": "0.2.0",
    "configurations": [
    {
    "name": "gdb",
    "type": "cppdbg",
    "request": "launch",
    "program": "${fileDirname}\\build\\debug\\Demo",//程序可执行文件的完整路径。
    "args": [],
    "stopAtEntry": false,
    "cwd": "${fileDirname}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    //"miDebuggerPath": "D:\\Qt\\Qt5.12.11\\Tools\\mingw730_64\\bin\\gdb.exe",
    "setupCommands": [
    {
    "description": "为 gdb 启用整齐打印",
    "text": "-enable-pretty-printing",
    "ignoreFailures": true
    }
    ],
    // 调试之前先编译一下,即对应tasks.json任务中的make
    "preLaunchTask": "make"//与tasks.json文件里的label名对应
    }
    ]
    }

    配置launch.json演示如下:


三、运行与调试

1.运行程序

  • 点击VsCode顶部菜单栏的终端>>运行任务>>qmake

  • 同样点击顶部菜单栏的终端>>运行任务>>make

  • 终端>>运行任务>>run

    演示如下:

2.调试程序

  • 万能的VsCode怎么能少了调试呢

    演示如下:

    演示用的Demo工程已上传至GitHubGitee

    自此完结,撒花!!!

配置VsCode的QT工程的更多相关文章

  1. [转]QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载

    1.下载windows下的QT库 QT4.8.5 for vs2010: http://download.qt-project.org/official_releases/qt/4.8/4.8.5/q ...

  2. QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载

    1.下载windows下的QT库 QT4.8.5 for vs2010: http://download.qt-project.org/official_releases/qt/4.8/4.8.5/q ...

  3. 使用 VSCode 给STM32配置一个串口 printf 工程

    使用 VSCode 给STM32配置一个串口 printf 工程 gcc 重定向 printf 和 keil 不一样. 文件准备 先从以前的工程中拷过一份串口的代码来,然后在 main 函数中初始化串 ...

  4. Qt工程打包发布

    Qt版本 5.7.1 1.添加环境变量 在..\Qt5.7.0\5.7\msvc2013_64\bin(..省略了盘符,例如我的是D:\Qt\Qt5.7.0\5.7\msvc2013_64\bin) ...

  5. Qt 工程 pro文件

    工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下: ...

  6. Qt工程文件说明

    Qt工程文件说明 2017-10-16  天天快乐6...  转自 LZS2851 修改   微信 分享: 这篇文章是我从360doc上转的,本来是要把转的url列出来的,但是它们居然禁掉了复制,而且 ...

  7. Linux下使用VsCode进行Qt开发环境搭建

    最近在Linux上搞Qt, vim环境还用不太习惯, QtCreator之前使用时莫名其妙崩溃然后丢失代码之后就被我彻底放弃了, 于是研究了一下用VsCode进行Qt开发. 首先是系统环境和下载安装包 ...

  8. VC6中创建Qt工程的创建

    文章来源:http://blog.sina.com.cn/s/blog_64d015c10100sf1o.html 本文主要介绍怎么创建可以在VC6中编译的QT工程.本文所采用环境为VC++6.0+Q ...

  9. 编辑器配置 vscode / Atom / Sublime Text

    vscode配置 https://code.visualstudio.com/docs/languages/cpp https://www.zhihu.com/question/30315894/an ...

  10. 非Qt工程使用Qt的信号槽机制

    非Qt工程,使用Qt的信号槽机制,蛋疼不?反正我现在就是要做这样一件蛋疼的事. 要使用Qt的信号槽机制,下面是从Qt Assist里面关于 signal & slots 的一句介绍: All ...

随机推荐

  1. vue项目如何解决跨域问题

    跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源(即指在同一个域)具有以下三个相同点 ​ ...

  2. 微软开源了一个 助力开发LLM 加持的应用的 工具包 semantic-kernel

    在首席执行官萨蒂亚·纳德拉(Satya Nadella)的支持下,微软似乎正在迅速转变为一家以人工智能为中心的公司.最近微软的众多产品线都采用GPT-4加持,从Microsoft 365等商业产品到& ...

  3. JS逆向实战12——某店 captchaToken 参数 加密

    今天爬取的是网站需要模拟登陆 目标网站 aHR0cHM6Ly9wYXNzcG9ydC55aGQuY29tL3Bhc3Nwb3J0L2xvZ2luX2lucHV0LmRv 浏览器抓包分析 随便输入一堆假 ...

  4. 仓库管理、dockerfile

    Docker仓库管理 ​ 仓库(Repository)是集中存放镜像的地方. Docker Dockerfile 什么是Dockerfile? ​ Dockerfile 是一个用来构建镜像的文本文件, ...

  5. What's the best way to read and understand someone else's code?

    Find one thing you know the code does, and trace those actions backward, starting at the end Say, fo ...

  6. Spring事务——传播性

    传播性 事务传播行为是为了解决业务层方法之间互相调用的事务问题,当一个事务方法被另一个事务方法调用时,事务该以何种状态存在?例如新方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运 ...

  7. R语言操作入门

    R语言基础之入门篇 一.初识R语言及环境搭建 R语言最初是由新西兰奥克兰大学统计系的教授Ross Ihaka和Robert Gentleman在S语言基础上开发完成的.是一门解释性语言.在我看来R语言 ...

  8. pysimplegui之画布,图形,表格和树结构元素

    画布元素 在我看来,tkinter Canvas 小部件是 tkinter 小部件中功能最强大的.虽然我尽我所能将用户与任何与 tkinter 相关的东西完全隔离,但 Canvas 元素是一个例外.它 ...

  9. [Java EE]缓存技术初探

    1 背景 使用场景:计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. 高并发下,为提高 频繁 查询 大量 可能常用的 数据库数据的 查询效率. 大部分情况下, ...

  10. [Java JDK]ResultSet.next()

    1 JDK [jdk1.5doc] Moves the cursor down one row from its current position. A ResultSet cursor is ini ...