概述
网上关于如何在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 ,具体如下:
- 点击项目
- 点击initial configuration
- 点击Add -> String
- key输入:CMAKE_TOOLCHAIN_FILE
- value输入:你vcpkg安装的路径
- 点击
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🤝
目前还在开发中,放一个设计图:
参考
|