如何以及在 Qt6、Qt6.7 的 VSCode 中包含哪些内容?

问题描述 投票:0回答:1

我有完整的 QtCreator 工作项目,我尝试在 VSCode 中运行它。项目内的 c_cpp_properties.json 具有以下包含路径的配置:

"includePath": [
    "${workspaceFolder}/**",
    "C:\\Qt_v2\\6.7.0\\msvc2019_64\\include\\QtCore\\**"
],

但这并没有成功,仍然有很多错误。 项目头文件内的典型错误“qobject.h(10, 10): 'QtCore/qobjectdefs.h'文件未找到”或深层库代码内的典型错误“此声明没有存储类或类型说明符C/C++(77), QT_BEGIN_NAMESPACE “还有很多其他错误。”

CMakeList.txt 的一部分

find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 6.5 REQUIRED COMPONENTS
    Core
    Charts
    Sql
    Quick
    SerialBus
    Scxml
    Test
    Xml
    LinguistTools
    Widgets
)
qt_standard_project_setup(REQUIRES 6.5)
# Link the Qt modules
target_link_libraries(app-name PRIVATE
    Qt6::Quick
    Qt6::Sql
    Qt6::Xml
    Qt6::Scxml
    Qt6::Core
    Qt6::Widgets
)
target_link_libraries(app-name LINK_PUBLIC
    App
    GUIplugin
)

看起来我包含了错误的路径或其他内容。互联网上没有很好的解释来阅读在 VSCode 中配置什么才能在 VSCode 中使用 Qt 6.7 进行编码(我已经安装了 QtCreator)。

最终的期望是 Qt 包含的代码没有错误,能够自动完成并能够构建代码。

windows qt visual-studio-code qt6
1个回答
0
投票

我在 Windows 11 中使用 this KDAB Doc 及其 GitHub Repo

您需要在Windows环境可用路径中添加一个指向Qt的环境变量(如

C:\Qt\6.5.3\mingw_64\bin
)。

这是它的Cmake文件

cmake_minimum_required(VERSION 3.5)

project(test_qtinVsCode VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(test_qtinVsCode
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET test_qtinVsCode APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(test_qtinVsCode SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(test_qtinVsCode
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_link_libraries(test_qtinVsCode PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.test_qtinVsCode)
endif()
set_target_properties(test_qtinVsCode PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

include(GNUInstallDirs)
install(TARGETS test_qtinVsCode
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(test_qtinVsCode)
endif()

© www.soinside.com 2019 - 2024. All rights reserved.