Qt 源码编译 -- obj文件无法找到

Qt5.15.8源码编译

Windows11编译Qt源码遇到obj文件无法找到

复制代码
LINK : fatal error LNK1181: 无法打开输入文件"project.obj"

原因:在编译阶段未正确生成obj文件,如有jom环境,可能是编译引导程序识别用jom编译,而jom并发性高,导致可能obj未生成完毕就link,故而失败,所以可以通过修改配置qtbase目录下的configure.bat中的set MAKE 可指定引导程序使用nmake编译。

环境准备

  1. 安装win32_msvc2019编译工具

    Visual Studio 2022,已安装"Desktop development with C++"

    必须在 Visual Studio Installer 中额外安装 "MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.2x)"(即 v142 工具集)

  2. 安装Perl(建议 Strawberry Perl)
    下载地址 下载完毕记得将对应路径添加至系统环境变量

  3. 安装Python 3,并确保 python 在 PATH

  4. 安装vcpkg(用于提供 OpenSSL 等库)

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

  5. 安装Everything文件查找软件
    下载链接

  6. 下载Qt5.15.8源码
    镜像网站

编译流程

1.找到x64 Native Tools Command Prompt for VS 2022 并点击运行

2. 切换到为win32_msvc2019环境

可以使用everything 搜索vcvars64.bat ,并将替换下述路径

call "D:\Soft\VisualStudio2022\Community\VC\Auxiliary\Build\vcvars64.bat" -vcvars_ver=14.29

2. cd进入源码目录

3. 修改指定的make编译工具(如有jom工具obj文件生成失败)

使用记事本打开qtbase目录下的configure.bat文件

4. 找到 set MAKE处,设置编译工具为nmake

若环境中存在jom工具(并发性更高的nmake,可能导致编译阶段跳过生成部分obj文件),

项目引导程序可能为成功为子模块编译生成obj文件,所以可以直接指定为nmake

5. 在源码根目录执行congfigure项目构建配置指令

configure -opensource -confirm-license -platform win32-msvc -skip qtwebengine -skip qtwayland -skip qtscript -prefix "./build" -nomake examples -nomake tests

  • '-prefix' 指定文件编译输出指令
  • '-opensource' 指定使用开源协议,适合个人和开源项目
  • '-skip' 指定跳过项目模块 qtwebengine 、qtwayland 、qtscript 比较耗时,如非必须可以先行跳过编译
  • '-platform' 指定目标平台和编译器

6. 执行nmake编译

参考文章

避开陷阱:Qt 源代码编译配置错误与依赖项缺失的终极指南
Qt源码编译 - configure 脚本配置

相关推荐
Chester_19994 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲5 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员6 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导6 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan6 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化6 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_695251496 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
大衛說7 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
可乐鸡翅yeah_9 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线