1.vsCode插件安装
以下插件都是除了中文插件都是需要的
2.mingw&cmake安装配置
cmake环境配置安装
在安装qt的时候默认会有mingw的版本安装
我这边默认路径如下:
C:\Qt\Tools\mingw1120_64\bin
这个路径根据自己的安装路径去看,然后把这个路径配置进环境里
此版本是Qt6.4.0 的默认安装的mingw 11.2.0
尽量用此版本
我用官网mingw 8.1.0会出现编译好的程序无法运行,不知道是不是我是win11的原因还是版本过低。
3.Qt环境配置
Qt可以配置mingw和mvsc 这里我们配置mingw
4.创建cmake工程
用Qt Creator创建一个cmake工程
这里我选择mingw
C:\Users\Administrator\Desktop\share\vsWorkSpace\test\Test 的目录
2022/07/12 14:32 <DIR> .
2022/07/12 14:10 <DIR> ..
2022/07/12 14:09 1,697 CMakeLists.txt
2022/07/12 14:09 183 main.cpp
2022/07/12 14:09 238 mainwindow.cpp
2022/07/12 14:09 344 mainwindow.h
2022/07/12 14:09 558 mainwindow.ui
5. vsCode配置
用vsCode打开Test 目录,如果vsCode配置了Cmake的话会自动检测build
按crtl+shift+p 输入cmake,点击Select a Kit
如果mingw没有配置,那么在配置好环境变量后,选择Scan for kits,下次进入就能看见下面的GCC 11.2.0等编译工具
已经配置好的直接点击GCC 11.2.0 就可以了,我的Qt版本是Qt6.4.0, GCC 8.1.0能够编译 ,但是编译出的exe不可用,所以选择的是GCC 11.2.0
点击1 2 3
进入build 运行Test.exe
成功
6. CMakeLists.txt解析
cmake_minimum_required(VERSION 3.5)
# 声明一个项目
project(Test VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# 设置moc rcc uic
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# 指定C++版本
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 查找Qt库
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
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET Test 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 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
${PROJECT_SOURCES}
)
endif()
endif()
# 链接Qt库
target_link_libraries(Test PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
set_target_properties(Test PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(Test)
endif()
更加详细的解释见Qt官方