首页 教程 开发工具 从零开始配置Qt+VsCode环境

从零开始配置Qt+VsCode环境

从零开始配置Qt+VsCode环境

文章目录

  • 从零开始配置Qt+VsCode环境
    • 写在前面
    • 扩展安装及配置
      • Qt Configure配置
    • VsCode创建Qt工程
    • VsCode+QMake+MinGw
    • VsCode+QMake+Msvc
    • VsCode+CMake+MinGw
    • VsCode+CMake+Msvc
    • QtCreator+QMake+MinGw->VsCode
    • QtCreator+QMake+Msvc->VsCode
    • QtCreator+CMake+MinGw->VsCode
    • QtCreator+CMake+Msvc->VsCode
    • 脚本和配置的通用化
      • VsCode+QMake

写在前面

  • 测试环境(20241120):Win11 + VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3
  • 本文章适用于有一定Qt使用基础,并且想转到VsCode的同学。

扩展安装及配置

  • Qt Configure(@vector-wlc) 必须

    从零开始配置Qt+VsCode环境

  • Qt Extension Pack(@Qt Group),不是必要但可提升使用体验,Qt UI具有点击.ui文件启动Qt Widgets Designer
    从零开始配置Qt+VsCode环境

  • Qt C++ Extension Pack(@Qt Group),该扩展包包含了Qt Extension Pack(@Qt Group),同时增加了C/C++(@Microsoft),CMake(@twxs),CMake Tools(@Microsoft),对于不想手动一个一个安装的可以推荐。若想使用CMake这个三个都是必须的。

    从零开始配置Qt+VsCode环境

  • 对于C/C++推荐装一个C/C++ Extension Pack(@Microsoft)

    从零开始配置Qt+VsCode环境

Qt Configure配置

  • Qt Configure: Mingw Path,请设置MinGwbin之前那个路径,请根据自身环境实际情况进行配置

    D:\Programs\Qt\5.15.2\mingw81_64

  • Qt Configure: Qt Dir,请根据自身环境实际情况设置Qt的安装路径

    D:\Programs\Qt

  • Qt Configure: Vcvarsall Path,设置VS环境变量脚本路径,在使用Msvc编译器时会用到,同样请根据自身环境实际情况进行配置

    D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat

从零开始配置Qt+VsCode环境

  • 这里主要了就是配置Qt Configure扩展其它扩展记不太清楚了,若有不懂的可评论或者私信沟通。
  • 还有就是我的CMake是设置了系统环境变量的,有可能会对项目操作有一些影响。

VsCode创建Qt工程

  • Ctrl + Shift + P 通过QtConfigure插件新建工程

    从零开始配置Qt+VsCode环境

  • 输入项目名称并确认
    从零开始配置Qt+VsCode环境

  • 选择Qt的构建套件,这些都是Qt的构建套件包含MinGw和Msvc,不同的Qt版本略有不同,请结合自身实际情况进行选择
    从零开始配置Qt+VsCode环境

  • 选择构建工具

    从零开始配置Qt+VsCode环境

  • 选择是否带UI文件

    从零开始配置Qt+VsCode环境

  • 选择完成过后将自动创建项目工程

    • 自动创建的工程如下,
    • 其中.pro文件是Qt的项目文件,
    • src是自动生成的源文件
    • .vscode中是VsCode工程工作时必要的配置信息,
    • scripts中是项目构建生成时的脚本,
    • 其实VsCode编译器工程本质上是通过命令行执行这些脚本调用qmake进行工程编译和生成的。
      从零开始配置Qt+VsCode环境
  • 若想要编译运行

    • 第一种可通过先单击一个.cpp文件,后会在右上角出现运行符号,可直接点击也可下拉选择

    从零开始配置Qt+VsCode环境
    从零开始配置Qt+VsCode环境

    • 第二种 Ctrl + Shift + P 输入run,选择运行生成任务

      从零开始配置Qt+VsCode环境

      • 选择 debug或者release
        从零开始配置Qt+VsCode环境

VsCode+QMake+MinGw

  • 若是创建工程时选择MinGw作为构建套件,QMake作为构建工具则需要做一些修改

  • 修改构建脚本 ./scripts/build_debug.bat

    • 在创建脚本的时候自动生成的mingw32-make的路径是在D:\Programs\Qt\5.15.2\mingw81_64 下面,这可能是由于我这里是Qt5.15.2,它不在这个路径下而是D:\Programs\Qt\Tools\mingw810_64,读者请根据自身实际情况进行修改。

    @echo off title qmake and nmake build prompt @REM 修改mingw32-make的路径 @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64 set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64 set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64 set BUILD_DIR=%cd%\build set PRO_DIR=%cd% set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH% if not exist %BUILD_DIR% ( md %BUILD_DIR% ) cd build qmake.exe %PRO_DIR%\VsCodeQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe del %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4 %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug cd debug if not exist %BUILD_DIR%\debug\Qt5Core.dll ( windeployqt VsCodeQMakeMinGw.exe )

  • 修改运行配置文件./.vscode/launch.json

    • 同样因为Qt不同版本的gbd.exe的调试器路径可能不同这样也需要做出一定修改否则会报错

      从零开始配置Qt+VsCode环境

    • 修改gdb.exe路径即miDebuggerPath参数

    {"version":"0.2.0","configurations":[{"name":"debug","type":"cppdbg","request":"launch","program":"${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe","args":[],"stopAtEntry":false,"cwd":"${workspaceRoot}","environment":[],"externalConsole":false,"MIMode":"gdb",// 修改gdb路径// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe","miDebuggerPath":"D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}],"preLaunchTask":"debug"}]}

  • 这时候编译运行应该能直接弹出Qt窗口了

    从零开始配置Qt+VsCode环境

VsCode+QMake+Msvc

  • VsCode1.93.0 + Qt5.15.2 + Msvc2015

  • 创建工程时选择Msvc作为构建套件,QMake作为构建工具时唯一需要注意的就是设置好 Qt Configure: Vcvarsall Path路径,在扩展配置中有说明。

  • 若是配置没有问题直接编译运行应该就能看到弹出的Qt窗口了。

    从零开始配置Qt+VsCode环境

VsCode+CMake+MinGw

  • VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + mingw81_64

  • 在创建工程时选择MinGw作为构建套件,选择CMake作为构建工具。

  • 构建生成运行

    从零开始配置Qt+VsCode环境

    • 第一次运行时需要选择构建器

    • 这里请选择QtBuild

    从零开始配置Qt+VsCode环境

  • 同时需要修改 ./.vscode/launch.json文件,这样也是修改dgb的路径,请读者根据自身情况就行修改。

    {"version":"0.2.0","configurations":[{"name":"QtBuild","type":"cppdbg","request":"launch","program":"${command:cmake.launchTargetPath}","args":[],"stopAtEntry":false,"cwd":"${workspaceRoot}","environment":[{"name":"PATH","value":"D:/Programs/Qt/5.15.2/mingw81_64/bin"}],"externalConsole":false,// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe""miDebuggerPath":"D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe"}]}

  • 对于CMake工程这里还有一种构建运行方式,且好像不用修改 launch.json文件。

    从零开始配置Qt+VsCode环境

  • 项目运行效果
    从零开始配置Qt+VsCode环境

VsCode+CMake+Msvc

  • VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + Msvc2015

  • 在创建工程时选择Msvc作为构建套件,选择CMake作为构建工具。

  • 只有第一次运行时需要选择对应的编译构建器,其它都与VsCode+CMake+MinGw一样。

  • 构建生成运行

    从零开始配置Qt+VsCode环境

    • 第一次运行时需要选择构建器

    • 这里请选择QtBuild
      从零开始配置Qt+VsCode环境

  • 运行效果如下

    从零开始配置Qt+VsCode环境

QtCreator+QMake+MinGw->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + mingw81_64

  • 特别说明:QtCreator和VsCode扩展(Qt Configure)自动创建的工程有些不同,但是都会依赖于pro文件,QMake是基于进行编译生成的

  • 使用QtCreator创建一个以MinGw为构建套件,QMake为构建工具的工程,并将其转换为VsCode工程,并在VsCode中进行编辑编译并运行。(这里不再赘述QtCreator工程的创建)

  • 这里进行说明一下,Qt工程文件是.pro文件,但VsCode并没有明确的工程文件只有工程的配置文件,通过我们前面的VsCode+QMake+MinGw 可以知道其实VsCode只是将工程编译整合到脚本命令中了,编译时依然会使用.pro工程。

  • 所以我们直接将VsCode+QMake+MinGw 创建的.vscodescripts 文件夹拷贝到QtCreator创建的工程,并用VsCode打开。

    从零开始配置Qt+VsCode环境

  • 先修改./scripts/build_debug.bat脚本

    • 这里是VsCode+QMake+MinGw 工程创建的脚本进行修改的,可以对比着看。
    • 最好不要使用中文,bat脚本有时候会因为编码问题导致运行不正常,可将其转换为ASCII编码,VsCode默认保存为UTF-8

    @echo off title qmake and nmake build prompt @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64 set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64 set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64 @REM set BUILD_DIR=%cd%\build set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit set PRO_DIR=%cd% set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH% if not exist %BUILD_DIR% ( md %BUILD_DIR% ) cd %BUILD_DIR% qmake.exe %PRO_DIR%\QtCreatorQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe del %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4 %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug cd debug if not exist %BUILD_DIR%\debug\Qt5Core.dll ( windeployqt %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe )

  • 再修改 ./.vscode/launch.json文件,设置运行文件路径

    {"version":"0.2.0","configurations":[{"name":"debug","type":"cppdbg","request":"launch",// "program": "${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe","program":"${workspaceRoot}/../build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit/debug/QtCreatorQMakeMinGw.exe","args":[],"stopAtEntry":false,"cwd":"${workspaceRoot}","environment":[],"externalConsole":false,"MIMode":"gdb",// 修改gdb路径// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe","miDebuggerPath":"D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}],"preLaunchTask":"debug"}]}

  • 特别说明:Qt.pro工程使用的是影子构建,所以这里是build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit,若是自定义构建输出路径,以及中间生成参数请,根据实际路径做修改。

  • 项目构建编译运行参考,运行效果如下

    从零开始配置Qt+VsCode环境

QtCreator+QMake+Msvc->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + msvc2015

  • 使用QtCreator创建一个以Msvc为构建套件,QMake为构建工具的工程,并将其转换为VsCode工程,并在VsCode中进行编辑编译并运行。(这里不再赘述QtCreator工程的创建)

  • 在QtCreator+QMake+MinGw->VsCode我们已经说明QtCreatorVsCode操作的基本原理,就不在进行说明了。

  • 同样我们拷贝VsCode+QMake+Msvc工程创建的.vscodescripts文件夹到QtCreator项目中。

  • 修改./scripts/build_debug.bat脚本

    • 这里是VsCode+QMake+Msvc工程创建的脚本进行修改的,可以对比着看。

    @echo off set QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64 set SRC_DIR=%cd% @REM set BUILD_DIR=%cd%\build set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bit if not exist %QT_DIR% exit if not exist %SRC_DIR% exit if not exist %BUILD_DIR% md %BUILD_DIR% cd %BUILD_DIR% call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 %QT_DIR%\bin\qmake.exe %SRC_DIR%\QtCreatorQMakeMsvc.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe del %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe nmake Debug if not exist %BUILD_DIR%\debug\Qt5Cored.dll ( %QT_DIR%\bin\windeployqt.exe %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe )

  • 修改 ./.vscode/launch.json文件,设置运行文件路径

    {"version":"0.2.0","configurations":[{"name":"Launch","type":"cppvsdbg","request":"launch",// "program": "${workspaceRoot}/build/debug/VsCodeQMakeMsvc.exe","program":"${workspaceRoot}/../build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bit/debug/QtCreatorQMakeMsvc.exe","args":[],"stopAtEntry":false,"cwd":"${workspaceRoot}","environment":[],"console":"integratedTerminal","preLaunchTask":"debug"}]}

  • 项目构建编译运行参考,运行效果

    从零开始配置Qt+VsCode环境

QtCreator+CMake+MinGw->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + mingw81_64

  • 使用QtCreator创建以MinGw为构建套件,CMake为构建工具的项目,并使用VsCode打开

  • 运行
    从零开始配置Qt+VsCode环境

  • 选择对应编译器(第一次时选择),会自动编译生成项目。

    从零开始配置Qt+VsCode环境

    • 再次点击运行,会选择启动目标,一般是第一个。(这里没有截到图可参考QtCreator+CMake+Msvc->VsCode)

    • 运行效果

      从零开始配置Qt+VsCode环境

QtCreator+CMake+Msvc->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + msvc2015

  • 使用QtCreator创建以Msvc为构建套件,CMake为构建工具的项目,并使用VsCode打开

    从零开始配置Qt+VsCode环境

  • 点击运行,选择对应编译器(第一次时选择),会自动编译生成项目。

    从零开始配置Qt+VsCode环境

  • 再次点击运行,会选择启动目标,一般是第一个。

    从零开始配置Qt+VsCode环境

  • 运行效果
    从零开始配置Qt+VsCode环境

脚本和配置的通用化

VsCode+QMake

  • 优化脚本,适配从QtCtrator创建的工程,适合使用Qt影子构建生成的构建路径。
  • 只需要设置编译器路径,编译debug还是release,工程名称TARGET_NAME,以及当前编译器是否是Msvc

@echo off title qmake and nmake build prompt set TARGET_NAME=VsCodeQMake set BUILD_NAME=debug set IS_MSVC=1 if %IS_MSVC%==1 ( set QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64 ) else ( set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64 ) set PRO_DIR=%cd% for %%A in ("%QT_DIR%") do (set "QT_KIT_NAME=%%~nxA") for %%A in ("%QT_DIR%\..") do (set "QT_VERSION=%%~nxA") set "QT_VERSION=%QT_VERSION:.=_%" echo %QT_KIT_NAME%| findstr /i "msvc">nul if errorlevel 1 ( set QT_KIT_STR=MinGW set IS_MSVC=0 ) else ( set QT_KIT_STR=%QT_KIT_NAME:~0,-3% set IS_MSVC=1 for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set QT_KIT_STR=%%QT_KIT_STR:%%i=%%i%% ) echo %QT_KIT_NAME%| findstr /i "64" >nul if errorlevel 1 ( set BIT_STR=32bit) else ( set BIT_STR=64bit) set QT_KIT_STR=Desktop_Qt_%QT_VERSION%_%QT_KIT_STR%_%BIT_STR% set BUILD_DIR=%PRO_DIR%/../build-%TARGET_NAME%-%QT_KIT_STR% set FIRST_CHAR=%BUILD_NAME:~0,1% for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set FIRST_CHAR=%%FIRST_CHAR:%%i=%%i%% set BUILD_NAME_U=%FIRST_CHAR%%BUILD_NAME:~1% if not exist "%QT_DIR%" exit if not exist "%PRO_DIR%" exit if not exist "%BUILD_DIR%" ( md "%BUILD_DIR%" ) if %BUILD_NAME%=="debug"( set CONFIG_STR="CONFIG+=%BUILD_NAME%" "CONFIG+=console") else(set CONFIG_STR="CONFIG+=%BUILD_NAME%") cd "%BUILD_DIR%" if %IS_MSVC%==1 ( goto build_msvc) else ( goto build_mingw) :build_msvc call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 %QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-msvc %CONFIG_STR% set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exe if exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%" nmake %BUILD_NAME_U% goto end :build_mingw set MINGW_PATH=%QT_DIR%\..\..\Tools\%QT_KIT_NAME:~0,7%0%QT_KIT_NAME:~-3% set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH% %QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-g++ %CONFIG_STR% set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exe if exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%" @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4 %MINGW_PATH%\bin\mingw32-make -f Makefile.%BUILD_NAME_U% goto end :end if not exist %BUILD_DIR%\%BUILD_NAME%\Qt5Cored.dll ( %QT_DIR%\bin\windeployqt.exe "%TARGET_NAME_ALL%" )

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.15k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.21k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.12k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.08k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  483

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  309

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。