我有完整的 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 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()