欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Qt Creator 中使用 vcpkg

Qt Creator 中使用 vcpkg

2025/2/6 1:05:47 来源:https://blog.csdn.net/liyuanbhu/article/details/145415937  浏览:    关键词:Qt Creator 中使用 vcpkg

Qt Creator 中使用 vcpkg

Qt Creator 是一个跨平台的轻量级 IDE,做 Qt 程序开发的同学们肯定对这个 IDE 都比较属于。这个 IDE 虽然没有 Visual Stdio 功能那么强,但是由于和 Qt 集成的比较深,用来开发 Qt 程序还是很顺手的。

早期,开发 Qt 程序都是用 qmake 来写项目文件,但是随着 cmake 的成熟,Qt 开发也慢慢转向 cmake。在 Qt 5 的时代,cmake 来写 Qt 的项目文件还是有蛮多问题的。但是 Qt 6 基本上把这些问题都解决了。

vcpkg 是一个跨平台的 C/C++ 包管理器。解决了 C/C++ 生态中没有包管理器这个最大的痛点。

这篇博客就讲一讲 Qt Creator 中开发 C/C++ 程序时如何使用 vcpkg 的各种包的问题。

如果你还是用 qmake 来写项目文件,那么就直接添加库就行了,有没有 vcpkg 没有什么影响。 如果你已经在使用 cmake,那么厦门的内容会对你有用。

编程环境介绍

我的电脑是 win 11,装的编译器是 Visual Stdio 2022。Qt Creator 版本是 15.0.0。 Qt 版本是 6.8.1。

因此下面的描述都是在这个环境下测试的。

我们以 gsl 库为例,测试程序很简单,下面是代码。

#include <QCoreApplication>
#include <QDebug>
#include <gsl/gsl_sf_bessel.h>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << gsl_sf_bessel_I0(0.5);return a.exec();
}

整个程序的作用就是 计算 bessel 函数在 0.5 处的函数值。计算这个值只不过是为了确保使用到 gsl 这个库。

CMakeLists.txt 文件如下:

cmake_minimum_required(VERSION 3.16)project(untitled5 LANGUAGES CXX)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
find_package(GSL REQUIRED)add_executable(untitled5main.cpp
)
target_link_libraries(untitled5 Qt${QT_VERSION_MAJOR}::Core GSL::gsl GSL::gslcblas)include(GNUInstallDirs)
install(TARGETS untitled5LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

上面的代码很简单,但是如果 Qt Creator 不做任何设置的话会直接报错。报错的内容就是找不到 GSL 这个库。

在这里插入图片描述

方式一(传统用法)

先介绍一种最简单的方法。这个方法要求 vcpkg 里面已经编译好了这个库。所有的项目公用同一组编译好的库。

在 Qt Creator 里项目-> Inital Configuration 里面加入 CMAKE_TOOLCHAIN_FILE 的值。

在这里插入图片描述

这里需要特别注意的是 Debug 和 Release 都需要输入一遍。如果不知道 CMAKE_TOOLCHAIN_FILE 的值该写什么,可以执行 vcpkg integrate install。输出如下:

D:\vcpkg>vcpkg integrate install
Applied user-wide integration for this vcpkg root.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake"All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.

这样设置完后直接在 Qt Creator 中执行 CMake 也还是不行的。需要先 Clear CMake Configuration ,然后再 CMake ,之后就可以正常编译运行了。

这种方式最简单,但是也有个致命的缺点。如果两个项目都使用到同一个库,但是这库编译时的配置参数不同,就不能用这种方法了。因为 vcpkg 没法同时存在一个库的两种不同配置。

方式二(vcpkg.json)

首先,要在 Qt Creator 中使能 vcpkg plugin。

在这里插入图片描述

这样就可以设置 vcpkg 的位置了。

在这里插入图片描述

之后就可以在项目中添加一个 vcpkg.json 文件了。

在这里插入图片描述

Qt Creator 有个 bug, 这样添加会报错:

在这里插入图片描述

没关系,我们自己把 vcpkg.json 文件加入到 CMakeLists.txt 中。

add_executable(untitled5main.cppvcpkg.json
)

打开 vcpkg.json,可以添加其他的库。
在这里插入图片描述

这里又有个 bug,用这种方法添加的库没法保存到文件中。所以我们需要自己复制,更新到 vcpkg.json 文件中。

下面的文件引入了两个库,之后就开始自动的下载源码,开始编译,要等好久。

{"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json","dependencies": [{"name":"gsl"},{"name":"opencv4", "features": ["jpeg"]}],"name": "mypackage","version-string": "0.0.1"
}

编译好的文件在build 目录中(vcpkg_installed)。大家可以自己去找找。

剩下的用法就差不多了。

这两种方法我觉得还是第一种更简单方便一些。所以,对于个人业余开发者来说,建议使用第一种方案。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com