qt静态编译 全自动编译qt静态库 qt5 windows安装qt (2024.2.23)

全自动编译qt5静态库(2024.2.23)

本教程是从无到有配置qt.io和vcpkg实现全自动编译qt5的静态库,使得您可以静态编译qt项目

0. 安装Visual Studio 2022

这个我就不多解释了,直接去官网下载社区版本,勾选使用C++的桌面开发安装好就行

1. 安装qt.io的开发环境

1.1 下载在线安装包并且配置国内源启动

到清华源下载在线安装包

QT官方现在已经不再提供离线安装包了,所以说我们只能用在线的

https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/

image

下载后别急着启动,我们打开cmd

输入下面的命令,双引号里面的路径换成你下载的安装包的实际位置

"C:\Users\Administrator\Downloads\qt-unified-windows-x64-online.exe" --mirror https://mirrors.ustc.edu.cn/qtproject

这样子启动可以让我们的在线安装包使用国内的源,这样子我们在国内不挂代理下载也能很快

1.2 安装qt.io开发环境

登录qt账号

image

如果没有就点击sign up注册一个,因为不登录安装不了

image

同意协议,下一步

image

下一步

image

选择你同不同意发送数据帮助qt改良软件,任选其一,下一步

image

选择安装目录,选择自定义安装,下一步

image

筛选条件中勾选Archive,然后点击Filter重新载入版本列表

image

选择要安装的版本,本教程是编译qt5版本

image

我这里选择了Qt 5.15.2MSVC 2019 32bitMSVC 2019 64bit版本

image

同意协议,下一步

image

然后qt安装工具会下载安装,完成后点击Finish

image

2. 安装vcpkg

一定要确保您安装vcpkg的盘有不少于72GB/126GB的空间!

如图,编译完成后超级大,空间一定要留足

image

如果你在编译64位版本的基础上还需要编译32位版本,那么需要留够126GB!

image

2.1 打开目标的盘

打开cmd,在你空间够的盘执行命令

我自己是D盘空间够大,所以说我就到D盘安装vcpkg:

D:
cd D:\

2.2 设置代理

然后我们国内访问github会特别慢,所以说我们需要设置代理:

git config --global http.proxy http://127.0.0.1:6521
git config --global https.proxy http://127.0.0.1:6521
set HTTP_PROXY=http://127.0.0.1:6521
set HTTPS_PROXY=http://127.0.0.1:6521

这里面的链接就换成你代理工具的提供的http链接,每个人端口都不一样

注意:如果端口超六万,很可能进入自由端口段,极易被其它程序占用端口,这种情况下建议修改端口为2000-50000的随机数

代理设置好后就可以开始下载安装vcpkg

2.3 下载安装vcpkg

先下载:

git clone https://github.com/microsoft/vcpkg

安装:

cd D:\vcpkg\
bootstrap-vcpkg.bat

设置环境变量,将vcpkg.exe文件所在目录加入到环境变量PATH中

image

如果后续要更新vcpkg,用git拉取新改动然后合并到本地,或者到Github页面下载zip解压覆盖。然后重新设置代理,重新运行bootstrap-vcpkg.bat

3. 编译安装qt5的静态库

3.1 重启控制台,重新设置代理

我们先关闭旧的cmd窗口,重新打开cmd,重新设置代理并且进入目录vcpkg:

D:
cd D:\vcpkg
git config --global http.proxy http://127.0.0.1:6521
git config --global https.proxy http://127.0.0.1:6521
set HTTP_PROXY=http://127.0.0.1:6521
set HTTPS_PROXY=http://127.0.0.1:6521

3.2 一键下载编译安装

有了vcpkg就能傻瓜式编译静态库了

不需要自己编译openssl!不需要自己下载那一堆前置库!

全自动编译所有需要的东西,无需任何人工!就像安装个软件一样轻松!

这个过程中有大量到github下载东西的请求,所以说必须设置代理,不然很可能出问题

并且使用前记得测试你代理的真连接延迟和访问速度,确保不误事

然后运行一键下载编译安装qt5静态库的命令:

vcpkg install qt5:x64-windows-static

接下来我们就可以去干别的事情了,大概每10分钟看一下就好

如果出错了,可以按照提示去看日志,日志的最底下会写明出错原因

如果网络每问题的话,大概率就是磁盘空间不足,所以说我前面会反复强调留够72GB以上,我自己为保险选择了100GB空闲以上的盘安装

编译时间会特别长,我的笔记本电脑固态盘,插电用时1小时6分钟,下载源代码文件流量消耗5GB。我的耗时仅供参考,如果你的CPU、网络和硬盘好,下载编译安装会更快

image

如果你还要编译32位的版本,那么挨着执行这个:

vcpkg install qt5:x86-windows-static

我自己是用了43分钟才编译完成

image

3.3 添加到开发环境

先执行vcpkg的安装命令

vcpkg integrate install

这样子MSVC就会识别vcpkg的安装目录了,CMake项目使用-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake也能一键添加它里面安装的库

image

如果要从vcpkg能识别的开发环境里面移除vcpkg目录,请执行vcpkg integrate remove


然后qt.io需要我们手动配置下:

先随便打开一个qt项目,或者随便创建一个空的qt项目

然后点击项目选项卡,点击管理构建套件按钮

image

弹出窗口中的左侧选中列表保持选中默认的构建套件(Kit),上方选择夹选择Qt版本选项卡,点击右侧添加按钮

image

这时会弹窗让你选择qmake文件,选择vcpkg\installed\x64-windows-static\tools\qt5\bin

image

然后我们就能看到5.15.12(qt5)已经成功添加到Qt版本列表中了

这是我们需要先点击应用按钮,然后再切换到上方的构建套件(Kit)选项卡

image

然后点击添加按钮添加构建套件

image

名字我们叫qt5 vcpkg static,Qt版本选择我们刚刚添加的5.15.12(qt5)版本,最后点击确定按钮保存设置

image

然后我们就可以在项目属性中看到我们刚刚添加的qt5 vcpkg static构建套件了,选中它添加到我们的项目里

image

然后我们就可以编译项目了,这里我选择Release模式构建

image

这时在build-项目名称-qt5_vcpkg_static-Release\release下就能看到静态编译出来的程序了:

image

如图,静态链接的程序就不用依赖那么多dll运行了

3.4 删除编译中间文件节约硬盘空间(可选)

如果你不需要导出vcpkg的包的话,可以删除vcpkg目录下的buildtrees文件夹

image

如果同时编译了32位,则能释放足足73GB

这里面是源代码和中间生成的一些文件,删除他们对我们使用库没有任何影响

所以说如果你跟着我的教程只是为了使用qt静态库,其它的都不需要的话,这个文件夹完全可以删除以释放空间

不过我们只能编译完成后删除,如果你的硬盘剩余空间小于72GB/126GB,那么照样是会因为剩余空间不足编译会失败的

除此之外,还有C:\Users\你的用户名\AppData\Local\vcpkg目录,这里面有编译好的包,7GB左右。

image

如果要安装其它项目的话,删除这个会导致你编译qt库途中编译的相关依赖库可能要重复编译;不过很多情况下它们依赖的库版本不同,这个缓存很难命中,所以说直接删除即可。

然后vcpkg目录下的downloads文件夹也可以删除,大约1.8GB,里面是编译qt静态库途中下载的文件。

就我个人观察,编译出的qt静态库是在installed文件夹内,而packages则是编译qt静态库的依赖库,如果仅是为了使用qt静态库,删除packages文件夹应该也是行的,但是本人没有尝试过,不推荐尝试

个人觉得删除packages应该会破坏vcpkg对中间依赖项的记录,可能会导致后续安装一些包时出现问题,所以还是建议保留

总结:

  1. vcpkg目录下的buildtrees文件夹可直接删除。官方说了这个是供vcpkg项目组调试定位问题用的,对于我们用户来说,安装完包后即可删除该文件夹。
  2. C:\Users\你的用户名\AppData\Local\vcpkg目录也是可删除的,但是请酌情考虑。这个文件夹是缓存编译结构,删除后安装其它项目就不会复用前面的缓存,导致编译时间增加,建议是定期清理一下,不要太频繁。
  3. vcpkg目录下的downloads文件夹可删除。这个文件夹是下载的源码文件,起一个下载缓存的作用。
  4. vcpkg目录下的packages文件夹不建议删除,影响尚不明确。

结束

别忘了取消设置git代理,不然代理关了的话git会无法联网

git config --global --unset http.proxy
git config --global --unset https.proxy
posted @ 2024-08-21 21:57  XY0797  阅读(635)  评论(0编辑  收藏  举报