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

本教程是从无到有配置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/

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

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

"C:UsersAdministratorDownloadsqt-unified-windows-x64-online.exe" --mirror https://mirrors.ustc.edu.cn/qtproject

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

1.2 安装qt.io开发环境

登录qt账号

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

同意协议,下一步

下一步

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

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

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

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

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

同意协议,下一步

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

2. 安装vcpkg

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

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

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

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中

如果后续要更新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、网络和硬盘好,下载编译安装会更快

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

vcpkg install qt5:x86-windows-static

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

3071431-20240821215358683-1542344560

3.3 添加到开发环境

先执行vcpkg的安装命令

vcpkg integrate install

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

3071431-20240821215358932-6903538

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


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

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

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

3071431-20240821215359208-718053342

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

3071431-20240821215359503-696607808

这时会弹窗让你选择qmake文件,选择vcpkginstalledx64-windows-statictoolsqt5bin

3071431-20240821215359792-136908043

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

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

3071431-20240821215400105-627002733

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

3071431-20240821215400371-419766079

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

3071431-20240821215400690-982263006

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

3071431-20240821215400959-966254731

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

3071431-20240821215401196-499029737

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

3071431-20240821215401485-1720326067

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

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

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

3071431-20240821215401744-2039159864

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

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

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

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

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

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

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

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

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

总结:

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

结束

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

git config --global --unset http.proxy
git config --global --unset https.proxy
阅读剩余
THE END