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

首先是系统环境和下载安装包:

Linux系统使用Ubuntu18.04 LTS.

Qt官网下载需要注册账号,但实际上官方有不需要注册账号的列表下载通道: http://download.qt.io, 在official_releases/qt/分支中找到自己想要的版本,下载 .run 文件即可, 关于Qt环境搭建, 网上有很多教程, 不再赘述.

VsCode直接官网下载最新版的 .deb, 下载成功使用dpkg -i命令安装即可.

安装成功后输入qmake --version进行检查, 出现下图内容说明Qt环境已经ok了, 如果没找到qmake命令, 在系统环境变量中添加qmake路径

接下来配置VsCode

在命令行输入code即可打开vscode编辑器,打开编辑器后创建一个测试文件夹test, 在test目录中创建如下结构

2个cpp和1个header用于测试, 代码如下

dialog.h

 #ifndef _MAIN_DIALOG_
#define _MAIN_DIALOG_ #include <QDialog>
#include <QLabel> class Dialog : public QDialog
{
Q_OBJECT public:
Dialog(QWidget *parent = );
~Dialog(); private:
QLabel *label_test;
} #endif

dialog.cpp

 #include <QLayout>
#include "dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent)
{
this->setWindowTitle("hello"); label_test = new QLabel(this);
label_test->setText("HelloWorld"); QGridLayout *main_layout = new QGridLayout(this);
main_layout->addWidget(label_test, , );
} Dialog::~Dialog()
{
}

main.cpp

 #include <QApplication>
#include "dialog.h" int main(int argc, char *argv[])
{
QApplication a(argc, argv); Dialog dialog;
dialog.show(); return a.exec();
}

接下来配置.vscode文件夹中的json

先配置tasks.json, 配置一些任务项, 并在生成项目之前先调用这些任务项

 {
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "qmake build makefile",
"command": "/home/tsing/Qt5/5.9/gcc_64/bin/qmake",
"args": [],
"options": {},
"problemMatcher": [],
"group": "build"
},
{
"type": "shell",
"label": "make build activefile",
"command": "/usr/bin/make",
"args": [],
"options": {},
"problemMatcher": [],
"group": "build"
"dependsOn": ["qmake build makefile"]
}
]
}

上面一共配置了两个任务项

第一个任务项qmake build makefile用于对当前项目生成makefile文件

第二个任务项make build activefile依赖于第一个任务项, 用于针对makefile文件生成当前项目的可执行文件

两个任务项中"command"标识了要运行的指令的地址, 需要根据自己pc的环境进行调整

第二个任务项使用make指令, 需提前安装

接下来配置launch.json, 配置vscode运行当前项目的可执行文件前的工作

 {
"version": "0.2.0",
"configurations": [
{
"name": "qt build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${workspaceRootFolderName}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"prelaunchTask": "make build activefile",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}

launch.json中配置了调试的各项工作, "program"指定了要运行的程序, "prelaunchTask"指定了运行前要执行的task, "miDebuggerPath"指定了调试工具gdb的路径

目前为止VsCode还不能对代码进行智能识别和Qt相关代码高亮, 配置c_cpp_properties.json如下

 {
"version": ,
"configurations": [
{
"name": "gcc_64",
"intelliSenseMode": "gcc-x64",
"includePath": [
"/home/tsing/Qt5/5.9/gcc_64/include",
"/home/tsing/Qt5/5.9/gcc_64/include/QtCore",
"/home/tsing/Qt5/5.9/gcc_64/include/QtGui",
"/home/tsing/Qt5/5.9/gcc_64/include/QtGui",
"/home/tsing/Qt5/5.9/gcc_64/include/QtWidgets",
"${workspaceRoot}"
],
"browse": {
"path": [
"/home/tsing/Qt5/5.9/gcc_64/include",
"/home/tsing/Qt5/5.9/gcc_64/include/QtCore",
"/home/tsing/Qt5/5.9/gcc_64/include/QtGui",
"/home/tsing/Qt5/5.9/gcc_64/include/QtGui",
"/home/tsing/Qt5/5.9/gcc_64/include/QtWidgets",
"${workspaceRoot}"
]
},
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17"
}
]
}

"includePath"和"path"标定了查找的headers的位置, "compilerPath"标定了分析用的编译器的路径, 这里我使用的gcc编译器, 需要提前安装

到目前为止所有准备工作都已经就绪, 在启动程序之前要先用qmake生成qt project, 这一步由于我使用5.X版本的原因, 需要修改 .pro文件, 所以我没有把这一步集成到tasks.json里

首先在命令行界面中将工作目录切换到test

使用qmake -project命令生成 .pro文件

在 .pro 文件中增加一行内容: QT += widgets core gui

之后F5运行出现对话框

切回命令行 tree -a看一下文件目录结构能看到生成了makefile和qt用的moc打头的文件

如果需要断点调试, 清理一下项目(moc打头的qt宏文件, .o文件, Makefile以及生成的可执行程序), 在.pro文件中添加CONFIG += debug即可

至此开发环境搭建成功

目前只是粗略的搭建了一下环境, 还有很多可以优化的地方让开发过程更简便, 有机会再研究

Linux下使用VsCode进行Qt开发环境搭建的更多相关文章

  1. windows/Linux下设置ASP.Net Core开发环境并部署应用

    10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...

  2. Linux下Jenkins+git+gradle持续集成环境搭建

    Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集  发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文   一.项目介绍 和 linux ...

  3. Zynq7000开发系列-6(QT开发环境搭建:Ubuntu、Zynq)

    操作系统:Ubuntu14.04.5 LTS 64bit Qt:Qt 5.4.2 (qt-opensource-linux-x64-5.4.2.run.qt-everywhere-opensource ...

  4. Qt开发环境搭建 - Windows + VS2010 + VS插件

    Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...

  5. qt学习教程1.qt开发环境搭建

    qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...

  6. 基于windows环境VsCode的ESP32开发环境搭建

    1. 基于windows环境VsCode的ESP32开发环境搭建,网上有各类教程,但是我实测却不行. 例如我在vscode内安装的乐鑫插件,扩展配置项是下图这样: 而百度的各类博文却都是这样: 经过网 ...

  7. 【Qt开发】【VS开发】VS2010+Qt开发环境搭建

    QT与JAVA有点类似,也是一种跨平台的软件(当然在windows平台和linux平台需要安装相应的QT开发环境和运行库,类似于JAVA在不同平台下的虚拟机JVM环境),因此对于某些需要同时支持win ...

  8. 10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用

    创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本Visual Studio 2017 prev ...

  9. VS2008下QT开发环境搭建(转)

    原博文地址:http://blog.csdn.net/sunnyboycao/article/details/6364444 VS2008集成QT4.7.2环境搭建 作者:jimmy 日期:2011- ...

随机推荐

  1. c#数字图像处理(二)彩色图像灰度化,灰度图像二值化

    为加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像,在灰度图像上得到验证的算法,很容易移植到彩色图像上.24位彩色图像每个像素用3个字节表示,每个字节对应着R.G.B分量的亮度(红.绿 ...

  2. window平台基于influxdb + grafana + jmeter 搭建性能测试实时监控平台

    一.influxdb 安装与配置 1.1 influxdb下载并安装 官网无需翻墙,但是下载跳出的界面需要翻墙,我这里提供下载链接:https://dl.influxdata.com/influxdb ...

  3. Java基于OpenCV实现走迷宫(图片+路线展示)

    Java基于OpenCV实现走迷宫(图片+路线展示) 由于疫情,待在家中,太过无聊.同学发了我张迷宫图片,让我走迷宫来缓解暴躁,于是乎就码了一个程序出来.特此记录. 原图: 这张图,由于不是非常清晰, ...

  4. orcle导入大数据文件

    0,创建ctl文件  内容为 OPTIONS (skip=0) LOAD DATA  CHARACTERSET 'UTF8' INFILE 'F:\anhui_data\20180814\shangh ...

  5. Java 设计模式之抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...

  6. Arduino系列之DHT11模块采集数据(一)

    下面我将介绍DHT11模块的相关用法 DHT11数字传感器概述:是一款含有已校准数字信号输出的温湿度复合传感器 .它应用专用的数字模块采集技术和温湿度传感技术 ,确保产品具有极 高的可靠性与卓越的长期 ...

  7. 如何最快实现物流即使查询功能-物流轨迹查询API

    上一篇文章我们介绍了一个物流服务提供商,推荐大家使用快递鸟接口,主要介绍了如何注册账号,获得密钥,找不到注册地址的,我在发一下: http://kdniao.com/reg 今天我们来聊如何利用快递鸟 ...

  8. 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)

    上一章聊到在车联网或物联网中对数据库的需求,以及 IoTDB 的整体架构,详情请见: 时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 ...

  9. 一口气说出 9种 分布式ID生成方式,面试官有点懵了

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 本文作者:程序员内点事 原文链接:https://mp.weix ...

  10. EMC NW disaster and recovery simulation 2

    scanner -ivp can help your new networker server recongize that only clone pool has data