1.引言
Visual Studio Code(VSCode)作为一款轻量且功能强大的代码编辑器,因其高效的启动速度、丰富的插件支持及良好的可定制性,已经成为许多开发者的首选。然而,尽管Qt框架本身提供了Qt Creator这一官方集成开发环境(IDE),但随着CMake的引入,开发者有了更多的选择——尤其是能够将Qt与VSCode结合,进行跨平台开发。本文旨在探讨如何使用VSCode进行Qt开发,并提供一个简单的配置指南,帮助开发者高效地搭建Qt开发环境。
2. Qt与VSCode结合的优势
在Qt开发过程中,VSCode的使用提供了一些显著的优势。传统的Qt开发环境如Qt Creator,虽然集成了大量与Qt相关的工具,但相较于VSCode,它在启动速度、占用内存和系统资源方面要逊色一些。VSCode的最大优势在于其轻量性和高度可定制性,使得开发者能够根据自己的需求灵活配置开发环境。
3. Qt与VSCode开发环境的配置
为了能够在VSCode中顺利进行Qt开发,开发者需要完成Qt框架的安装及配置、VSCode插件的安装与配置,以及CMake构建系统的设置。以下为详细步骤:
安装Qt
首先,开发者需要从[Qt官网](https://www.qt.io/download)下载并安装Qt。Qt的安装程序提供了多种平台的版本,开发者可以根据自己的操作系统和开发需求选择合适的版本。建议选择Qt的长期支持(LTS)版本,以保证稳定性和兼容性。
配置Qt环境变量
在完成Qt的安装后,需要配置Qt的环境变量。以Windows系统为例,配置步骤如下:
“系统属性” → “高级系统设置” → “环境变量”。
“系统变量”中点击“新建”,添加以下环境变量:
变量名:QTDIR变量值:C:\Qt\5.15.2\msvc2019_64(请根据实际安装路径进行修改)在Path环境变量中,添加Qt的bin目录路径,例如:C:\Qt\5.15.2\msvc2019_64\bin。
配置完成后,可以通过命令行输入qmake -version命令来检查Qt是否正确安装。如果返回Qt版本信息,则说明环境配置成功。
VS Code
VS Code及其必要插件的安装在以往的章节中已经介绍过,这里不再赘述。见链接:mac平台VSCode配置指南
4.使用CMake进行Qt项目构建
为保证可以借助CMakeLists进行Qt模块的加载,我特意书写了通用模板,各位读者朋友可以自由取用,如下:
#========================================== NOTICE BEGIN ==========================================
#FOR QT DEPENDENCY MODULES,
#1. you should define QT_DIR in parent CMakeLists.txt or you should set environment value QTDIR, which pointer to Qt's directory
#2. DEPENDENCY_QT_MODULES as an INPUT variable, you should set DEPENDENCY_QT_MODULES in parent CMakeLists.txt BEFORE include this file, which is a list of Qt's librarys you needed in your project, such as Widgets, Core, Gui, etc.
#3. LINK_LIBS as an OUTPUT variable, you should link librarys with the vaiable ${LINK_LIBS} in your parent CMakeLists.txt AFTER include this file.
#========================================== NOTICE END ==========================================
#check Qt's path
if(NOT EXISTS "${QT_DIR}")
#try to use env
set(CMAKE_PREFIX_PATH "$ENV{QTDIR}")
message(STATUS "using QT_DIR from env: ${CMAKE_PREFIX_PATH}")
else()
set(CMAKE_PREFIX_PATH "${QT_DIR}")
endif()
if(NOT EXISTS "${CMAKE_PREFIX_PATH}")
message(FATAL_ERROR "Qt's directory is invalid! ${CMAKE_PREFIX_PATH}")
endif()
#check Qt version
set(QT_VERSION_PREFIX Qt5)
find_package(Qt6 COMPONENTS Widgets)
if(${Qt6Widgets_FOUND})
set(QT_VERSION_PREFIX Qt6)
endif()
message(STATUS "QT_VERSION_PREFIX = ${QT_VERSION_PREFIX}")
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON )
set(CMAKE_AUTOUIC ON )
set(CMAKE_AUTORCC ON )
if(ENABLE_MESSAGELOGCONTEXT)
set(QT_MESSAGELOGCONTEXT TRUE)
add_definitions(-DQT_MESSAGELOGCONTEXT)
endif(ENABLE_MESSAGELOGCONTEXT)
foreach(QT_MODULE_NAME ${DEPENDENCY_QT_MODULES})
# Find the QtWidgets library
find_package(${QT_VERSION_PREFIX}${QT_MODULE_NAME} REQUIRED)
# Add the include directories for the Qt 6 Widgets module to
# the compile lines.
include_directories(${${QT_VERSION_PREFIX}${QT_MODULE_NAME}_INCLUDE_DIRS})
# Use the compile definitions defined in the Qt 6 Widgets module
add_definitions(${${QT_VERSION_PREFIX}${QT_MODULE_NAME}_DEFINITIONS})
# Add compiler flags for building executables (-fPIE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${QT_VERSION_PREFIX}${QT_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS}")
# add library
if (DEFINED ${QT_VERSION_PREFIX}::${QT_MODULE_NAME})
list(APPEND LINK_LIBS ${QT_VERSION_PREFIX}::${QT_MODULE_NAME})
endif()
endforeach(QT_MODULE_NAME ${DEPENDENCY_QT_MODULES})我将该文件命名为DEPENDENCY_QT_MODULES.cmake,然后在父CMakeLists.txt中引入,如下:
set(DEPENDENCY_QT_MODULES Widgets Core Gui)
include(DEPENDENCY_QT_MODULES.cmake)
target_link_libraries(test_qt_cmake PRIVATE ${LINK_LIBS})5.总结
通过将VSCode与Qt结合,可以充分发挥VSCode的轻量和可定制化优势,同时享受Qt强大的跨平台支持和GUI开发能力。在使用VScode进行Qt开发时,需要加载Qt的相关模块,本文提供了一个简单的配置指南,希望对读者有所帮助。