qt creator使用vcpkg

这篇博客介绍了如何在QtCreator 7.0.1和Qt 6.2.3环境下,针对MacOS Monterey 12.2.1系统,通过CMake结合vcpkg来管理第三方库。作者提供了两种CMake配置方法,并详细展示了在QTCreator中设置CMAKE_TOOLCHAIN_FILE的步骤。此外,还给出了完整的CMakeLists.txt示例,包括添加编译选项和链接库的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

网上关于如何在QT Creator 中使用vcpkg的教程较少,且很多无效,介绍下目前我使用的方法。

Qt Creator:7.0.1
Qt:6.2.3
MacOS:Monterey 12.2.1

Cmake中使用vcpkg

方式一:

$ cmake .. "-DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake"

方式二:

cmake_minimum_required(VERSION 3.14)

project(chatkit)

# 工程中使用vcpkg安装的库,改成自己的vcpkg安装目录
set(CMAKE_TOOLCHAIN_FILE "/Users/xxx/repo/github/vcpkg/scripts/buildsystems/vcpkg.cmake")

那么,在QT Creator中如何使用vcpkg,来安装第三方库依赖呢?

QT Creator 使用vcpkg

直接在项目Tab下面的增加 CMAKE_TOOLCHAIN_FILE ,具体如下:

  1. 点击项目
  2. 点击initial configuration
  3. 点击Add -> String
  4. key输入:CMAKE_TOOLCHAIN_FILE
  5. value输入:你vcpkg安装的路径
    请添加图片描述
  6. 点击 Re-configure with inital Parameters

此时,我们观察输出:
在这里插入图片描述
成功!

附录:我的完整CMakeLists.txt

cmake_minimum_required(VERSION 3.14)

project(chatkit)

add_definitions(
        -g
        -fPIC
        -D__STDC_FORMAT_MACROS
        -Wall
        -Wno-unused-parameter
        -Wno-unused-function
        -Wno-unused-const-variable
        -Wno-unused-variable
        -Wno-unused-value
        -Wshadow
        -Wcast-qual
        -Wcast-align
        -Wwrite-strings
        -Wsign-compare
        -Winvalid-pch
        -fms-extensions
        -Wfloat-equal
        -Wextra
        -std=c++11
        #-Werror # 警告视为错误,比较严格,可以根据需求启用
)

# 库名字和版本号设置
set(ChatKitLib chatkit)
set(ChatKitLib_VERSION 0.1.0)

# 源码文件
aux_source_directory(cim CHAT_KIT_SRC)
aux_source_directory(cim/base CHAT_KIT_SRC)
aux_source_directory(cim/base/file CHAT_KIT_SRC)
aux_source_directory(cim/base/util CHAT_KIT_SRC)
aux_source_directory(cim/core CHAT_KIT_SRC)
aux_source_directory(cim/crypt CHAT_KIT_SRC)
aux_source_directory(cim/db CHAT_KIT_SRC)
aux_source_directory(cim/pb CHAT_KIT_SRC)

if (APPLE) # 使用vcpkg 快速安装的依赖
    find_package(protobuf CONFIG REQUIRED)
    find_package(spdlog CONFIG REQUIRED)
    find_package(restclient-cpp CONFIG REQUIRED)
    find_package(SQLiteCpp CONFIG REQUIRED)
    find_package(unofficial-libuv CONFIG REQUIRED)
    find_package(nlohmann_json CONFIG REQUIRED)
else ()
    #set(VCPKG_INCLUDE_DIR /Users/xuyc/repo/github/vcpkg/installed/x64-osx/include)
    #set(VCPKG_LIB_DIR /Users/xuyc/repo/github/vcpkg/installed/x64-osx/lib)
endif ()

# 动态库
add_library(${ChatKitLib} SHARED ${CHAT_KIT_SRC})
#add_library(${ChatKitLib} STATIC)
# 起一个别名
add_library(cim::chatkit ALIAS ${PROJECT_NAME})

target_include_directories(${PROJECT_NAME}
        PUBLIC
        ${PROJECT_SOURCE_DIR} # chatKit目录,这样外部就能找到头文件所在目录了
        ${VCPKG_INCLUDE_DIR}
        )
target_link_directories(${PROJECT_NAME}
        PUBLIC
        ${VCPKG_LIB_DIR})

target_link_libraries(${ChatKitLib}
        PRIVATE
        # 在macOS下,是静态库,windiws下,需要显式安装静态库,否则为动态库
        protobuf::libprotobuf-lite
        restclient-cpp
        SQLiteCpp
        spdlog::spdlog
        nlohmann_json::nlohmann_json
        unofficial::libuv::libuv
        )

关于

写了Qt开源的IM 客户端,如果感兴趣,不妨点个Star🤝

目前还在开发中,放一个设计图:

在这里插入图片描述

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值