vscode+qt5+cmake编译调试过程解析

 更新时间:2022年03月18日 08:26:52   作者:mohistH  
这篇文章主要介绍了vscode+qt5+cmake编译调试过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

环境

  • os: win11
  • cmake: 3.23
  • qt: qt5.14
  • 其他vscode c++辅助开发插件, 我的插件列表

编译vscode + cmake + qt5.14

文件列表

cmakelists.txt完整内容

cmake_minimum_required(VERSION 3.18)

project(cmake_demo01 LANGUAGES CXX)
set(CMAKE_PREFIX_PATH "C:/major/development/tools/qt/5.14/install/5.14.2/msvc2015_64")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Widgets Gui Core LinguistTools REQUIRED)
# set(TS_FILES cmake_demo01_zh_CN.ts)
file(GLOB_RECURSE src_file ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE inc_file ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
# file(GLOB_RECURSE ui_file ${CMAKE_CURRENT_SOURCE_DIR}/ui/*.ui)
# qt5_wrap_ui(wrap_ui_file ${ui_file})
# SOURCE_GROUP("ui" FILES ${ui_file} ${wrap_ui_file})
  add_executable(${PROJECT_NAME}
    ${src_file}
    ${inc_file}
    # ${wrap_ui_file}
    # ${TS_FILES}
  )
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include  ${CMAKE_CURRENT_SOURCE_DIR}/ui)
# target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(cmake_demo01 PRIVATE Qt5::Widgets Qt5::Core Qt5::Gui)
# qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})

编译

  • 打开 command platette(ctrl + ,) 依次执行: cmake:select a kit 、cmake:select variant、 cmake:build
  • 编译结果:

调试

build.cmd

文件内容需要替换为本机的Qt和msvc编译器路径

title test build command
set VCINSTALLDIR=C:\major\development\tools\vs_2015\install\VC
set QTDIR=C:\major\development\tools\qt\5.14\install\5.14.2\msvc2015_64
set PATH=%PATH%;%QTDIR%\bin
call "%VCINSTALLDIR%\vcvarsall.bat" amd64
cmake --build ./build --config Debug --target cmake_demo01 -j 14 --

task.json

{
    "version": "2.0.0",
    "tasks": [{
        "taskName": "qt5",
        "type": "shell",
        "command": "cmd",
        "args": [
            "/c",
            "${workspaceRoot}/build.cmd",
            "debug"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }]
}

lauch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "cl.exe ",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceRoot}/build/debug/${workspaceFolderBasename}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "console": "externalTerminal",
            "preLaunchTask": "qt5"
        }
    ]
}

F5调试

到此这篇关于vscode+qt5+cmake编译调试的文章就介绍到这了,更多相关vscode+qt5+cmake编译调试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文读懂C++中指针和内存分配

    一文读懂C++中指针和内存分配

    我们知道声明的所有变量在内存中都有一个特定的地址。声明一个指针变量来指向内存中的这些地址,这篇文章主要介绍了C++中指针和内存分配,需要的朋友参考下吧
    2021-06-06
  • C++用一棵红黑树同时封装出set与map的实现代码

    C++用一棵红黑树同时封装出set与map的实现代码

    set中存储的一般为键K即可,而map存储的一般都是键值对KV,也就是说他们结构是不同的,那么我们如何才能用一颗红黑树同时封装出set与map两种容器呢,那么接下来我们具体地来研究下STL库中是怎样实现的,并且进行模拟实现,需要的朋友可以参考下
    2024-03-03
  • C语言实现简单的扫雷功能

    C语言实现简单的扫雷功能

    这篇文章主要为大家详细介绍了C语言实现简单的扫雷功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C语言结构体的全方面解读

    C语言结构体的全方面解读

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项
    2021-10-10
  • FFmpeg实现音频渐响效果参数值详解

    FFmpeg实现音频渐响效果参数值详解

    这篇文章主要为大家介绍了FFmpeg实现音频渐响效果参数值详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 求解旋转数组的最小数字

    求解旋转数组的最小数字

    这篇文章主要介绍了求解旋转数组的最小数字的相关资料,需要的朋友可以参考下
    2017-05-05
  • OpenCV图像处理之实现图像膨胀腐蚀操作

    OpenCV图像处理之实现图像膨胀腐蚀操作

    图像形态学操作是指基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学对图像进行处理。本文将为大家介绍一下如何利用OpenCV实现其中的腐蚀和膨胀操作,需要的可以参考一下
    2022-09-09
  • 详解C/C++中new A与new A()的区别

    详解C/C++中new A与new A()的区别

    这篇文章主要通过一些简单的示例为大家详细介绍一下C/C++中new A与new A()的区别,文中的示例代码简洁易懂,快跟随小编一起学习起来吧
    2023-07-07
  • C语言数据结构之二分法查找详解

    C语言数据结构之二分法查找详解

    二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n),但二分查找算法更优
    2022-02-02
  • C语言栈与队列相互实现详解

    C语言栈与队列相互实现详解

    栈和队列,严格意义上来说,也属于线性表,因为它们也都用于存储逻辑关系为 "一对一" 的数据,但由于它们比较特殊,本章讲解分别用队列实现栈与用栈实现队列
    2022-04-04

最新评论