在Clion中开发QT项目时使用vcpkg提供的第三方库,超详细教程,一步一图!

在Clion中开发QT项目时使用vcpkg提供的第三方库,超详细教程,一步一图!

一: 配置Clion的QT开发环境

在欢迎界面选择(自定义 ) =》 (所有设置)
在这里插入图片描述

选择(构建、执行、部署)=》(工具链)
添加 Visual Studio(MinGW也可以,换成添加QT目录下的MinGW即可) ,如图
在这里插入图片描述
右边配置
名称:随意,自己记得就好
工具集: 选择到vs的安装目录即可
CMake:不管,让他自动选择
构建工具:vs安装目录\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe
C编译器:vs安装目录\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64\cl.exe
C++编译器:vs安装目录\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64\cl.exe
调试器:不管,让他自动选择
如图:
在这里插入图片描述

然后点应用,再点确认就配置完成了

二、新建QT项目

选择(Qt 微件可执行程序)

位置:项目路径+项目名
Qt CMake 前缀路径: 选到QT安装的msvc目录(使用MinGW需要选到MinGW的目录)
语言标准:QT6已经支持c++17,不低于17就行
Qt版本: 6(我只试过6,5没试过,有需要可以自己试试)

如图:
在这里插入图片描述

创建完成后选择(设置)
在这里插入图片描述

然后选择(构建、执行、部署)=》(CMake)
将(工具链)更改为上面配置好的msvc工具链
如图
在这里插入图片描述

然后确认即可
现在尝试运行项目
右键 CMakeLists.txt 文件,选择(重新加载CMake项目)
再点击运行

在这里插入图片描述

应该可以正常运行弹出一个窗口

在这里插入图片描述
运行成功后在进行 CMakeLists.txt 中的配置

三、配置 CMakeLists.txt 以使用vcpkg

以下以fmt库为例
先通过vcpkg下载fmt库
我已经提前下好
下载命令:

vcpkg install fmt

在这里插入图片描述

回到Clion对 CMakeLists.txt 进行配置
1、在 CMAKE_PREFIX_PATH 后新增 vcpkg 安装的库的地址

例如:
set(CMAKE_PREFIX_PATH "D:/DeveloperComponents/Cpp/qt/6.7.2/msvc2019_64;此处替换为vcpkg安装目录/installed/x64-windows")

在这里插入图片描述

2、新增下面两个变量
将上面的变量的两个值分别复制给下面的两个变量

set(QT_CMAKE_PREFIX_PATH 上方第一段)

set(VCPKG_CMAKE_PREFIX_PATH 上方第二段)

在这里插入图片描述
3、给文件中自带的 target_link_libraries 中加上 PRIVATE 避免报错

target_link_libraries(${PROJECT_NAME}
        PRIVATE
        Qt::Core
        Qt::Gui
        Qt::Widgets
)

在这里插入图片描述
4、将 安装 fmt 时vcpkg在控制台打印的东西复制到 target_link_libraries 下面

find_package(fmt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE fmt::fmt)

一定要注意将原文中的 main 换成 ${PROJECT_NAME}
在这里插入图片描述
5、设置两个新变量,说明安装的所有库,方便后面循环拷贝
如果有其他的可以直接在后面追加

# 重要!设置所有的库
# 所有安装的QT库
set(QT_LIB_LIST Core Gui Widgets)
# 所有通过vcpkg安装的库
set(VCPKG_LIB_LIST fmt)

在这里插入图片描述
6、修改 QT_INSTALL_PATH 变量
将 QT_INSTALL_PATH 的值 从 CMAKE_PREFIX_PATH 改为 QT_CMAKE_PREFIX_PATH

在这里插入图片描述

7、删除自带的拷贝循环
文件最后的foreach
在这里插入图片描述
在这个位置加入我提供的两个foreach
QT新版样式可选,不需要就不加,后面两个foreach必加

	# QT新版样式库
    if (EXISTS "${QT_INSTALL_PATH}/plugins/styles/qmodernwindowsstyle${DEBUG_SUFFIX}.dll")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E make_directory
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/plugins/styles/qmodernwindowsstyle${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
    endif ()

    # 重要! 用于拷贝QT提供的库到项目构建文件夹
    foreach (QT_LIB ${QT_LIB_LIST})
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/bin/Qt6${QT_LIB}${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
    endforeach (QT_LIB)

    # 重要! 用于拷贝vcpkg提供的库到项目构建文件夹
    foreach (VCPKG_LIB ${VCPKG_LIB_LIST})
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${VCPKG_CMAKE_PREFIX_PATH}/debug/bin/${VCPKG_LIB}${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
    endforeach (VCPKG_LIB)

在这里插入图片描述
改完后需要和第二步(新建QT项目)一样(重新加载CMake项目)
然后进行构建
在这里插入图片描述
在这里插入图片描述

在此贴出 CMakeLists.txt 文件内容供大家参考

cmake_minimum_required(VERSION 3.29)
project(AAAA)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# 需修改
set(CMAKE_PREFIX_PATH "D:/DeveloperComponents/Cpp/qt/6.7.2/msvc2019_64;D:/DeveloperComponents/Cpp/vcpkg/installed/x64-windows")

# 需新增
set(QT_CMAKE_PREFIX_PATH "D:/DeveloperComponents/Cpp/qt/6.7.2/msvc2019_64")
# 需新增
set(VCPKG_CMAKE_PREFIX_PATH "D:/DeveloperComponents/Cpp/vcpkg/installed/x64-windows")


find_package(Qt6 COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED)

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME}
        PRIVATE
        Qt::Core
        Qt::Gui
        Qt::Widgets
)

find_package(fmt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE fmt::fmt)

# 重要!设置所有的库
# 所有安装的QT库
set(QT_LIB_LIST Core Gui Widgets)
# 所有通过vcpkg安装的库
set(VCPKG_LIB_LIST fmt)

if (WIN32 AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
    set(DEBUG_SUFFIX)
    if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
        set(DEBUG_SUFFIX "d")
    endif ()
    # 需修改
    set(QT_INSTALL_PATH "${QT_CMAKE_PREFIX_PATH}")
    if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
        set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
        if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
            set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
        endif ()
    endif ()
    if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E make_directory
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
    endif ()

    # QT新版样式库
    if (EXISTS "${QT_INSTALL_PATH}/plugins/styles/qmodernwindowsstyle${DEBUG_SUFFIX}.dll")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E make_directory
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/plugins/styles/qmodernwindowsstyle${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/")
    endif ()

    # 重要! 拷贝库到项目构建文件夹
    foreach (QT_LIB ${QT_LIB_LIST})
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/bin/Qt6${QT_LIB}${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
    endforeach (QT_LIB)

    # 重要! 拷贝库到项目构建文件夹
    foreach (VCPKG_LIB ${VCPKG_LIB_LIST})
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${VCPKG_CMAKE_PREFIX_PATH}/debug/bin/${VCPKG_LIB}${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
    endforeach (VCPKG_LIB)
endif ()

四、测试

最后去主函数中试一下看看是否链接成功
在这里插入图片描述
然后运行
在这里插入图片描述
控制台打印成功,并且QT窗口也打开了。
到此为止就已经成功了

有任何问题欢迎留言评论,我看到会第一时间回复,文章为原创,搬运请注明来源!

CLion是一款由JetBrains开发的集成开发环境(IDE),而Qt 5.15则是Qt开发框架的一个版本。在CLion使用Qt 5.15主要是为了方便开发使用Qt框架来构建跨平台的应用程序。 首先,CLion提供了对C++语言的全面支持,包括代码编辑、调试、自动补全、代码重构等功能,使得开发者可以更加高效地编写C++代码。它还具有强大的代码导航和搜索功能,方便开发者快速定位和修改代码。 其次,Qt 5.15是Qt开发框架的一个新版本,它提供了许多新的功能和改进,例如对高分辨率显示屏的支持、改进的图形化渲染引擎、增强的多媒体功能等。使用Qt 5.15可以让开发者更容易地创建现代化、响应式的用户界面,并实现丰富的功能。 在CLion集成Qt 5.15可以帮助开发者更轻松地开发使用Qt框架的应用程序。CLion提供了对CMake构建系统的支持,而CMake是Qt框架的常用构建系统之一。CLion可以自动检测并解析Qt项目的相关文件(如.pro文件和CMakeLists.txt文件),并根据这些文件自动生成项目的结构和构建脚本。开发者可以使用CLion的集成开发环境进行Qt项目的编写、编译和调试。 总之,CLionQt 5.15是开发跨平台应用程序的强大工具。它们的组合可以提供一套完整的开发环境,帮助开发者更高效地使用Qt框架来构建现代化的应用程序。无论是开发图形化界面、多媒体应用还是跨平台移动应用,CLionQt 5.15都能够提供强大的支持和丰富的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值