1. 程式人生 > 其它 >vscode+qt5+cmake編譯除錯

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除錯