Qt 编译配置相关总结
MinGW 与 MSVC 编译的区别
我们可以从 Qt 下载页面看到两种版本编译器,如下图:
我们来对比一下这两个编译器的区别:
- MSVC 是指微软的 VC 编译器。
- MinGW 是 Minimalist GNU on Windows 的缩写。它是一个可自由使用和自由发布的 Windows 特定头文件和使用 GNU 工具集导入库的集合,允许你在 GNU/Linux 和 Windows 平台生成本地的 Windows 程序而不需要第三方 C 运行时库。
这两个都是很好用的编译工具,但是他们兼容的并不好。当你的项目使用 MinGW 编译的使用,想要用一个 MSVC 编译生成的库时就会有问题。使用 MinGW 编译项目的时候,所使用的 Lib 也要是 MinGW 编译的。如果你只是开发 Window 平台的软件时,最好使用 MinGW 编译,这样可以使用大量的第三方 lib,还有很多的构建指令,毕竟 window 上 MSVC 才是王道。
注意:Qt 如果使用 MSVC 编译,需要安装 VS 和Win10 SDK。
Qt 如何使用 MSVC 编译?
若只是在计算机上安装了 Visual Stuido 2015(或其他版本),图中显示的界面上 MSVC2015 的两个编译器的图标会变为带有感叹号的一个黄色图标。Debuggers 页面没有 Windows 的 CDB 调试器,可以用 MSVC 编译器对 Qt Creator 编写的程序进行编译,但是不能调试,这是因为缺少了 Windows Software Development Kit(SDK),这个 SDK 不会随 Visual studio 一同安装,自行下载。可以下载 windows software development kit(SDK)for windows 8.1,安装后重启计算机即可。
Win10 SDK 的安装可以参考:Qt5.9.6使用MSVC(VS2017)开发环境搭建
此时如下图这样配置,只配置了 C 和 C++ 编译器,不能配置调试器。
再在 "项目" 中切换成 MSVC2015_64 编译,此时会报错:C1902: 程序数据库管理器不匹配;请检查安装解决
。解决方法:
到 F:\VS2015\VC\bin 目录下面拷贝 mspdbsrv.exe、mspdb140.dll、mspdbcore.dll、mspdbst.dll 到 F:\VS2015\Common7\IDE 下面,然后重启 Qt 即可。你没有看错,以上确实在 VS2015 安装目录中进行操作,这确实是 Qt 运行时发生的错误!
然后编译运行正常,但是调试会报错,原因正如上面所说还未安装 Win10 SDK。
qmake 是什么?
qmake 是 Qt 提供的一个编译工具,他可以生成与平台无关的 .pro 文件,然后利用该文件生产与平台相关的 Makefile 文件。
Makefile 文件中包含了要创建的目标文件或可执行文件、创建目标文件所依赖的文件和创建每个目标文件时需要运行的命令等信息。最后使用 mingw32-make 工具来完成自动编译(命令行编译的情况),mingw32-make 就是通过读入 Makefile文件 的内容来执行编译工作的。使用 mingw32-make 命令时会为每一个源文件生成一个对应的 .o 目标文件,最后将这些目标文件进行链接来生成最终的可执行文件。
Qt 构建、运行、qmake的区别
qmake:根据实际环境创建项目文件 .pro,并且运行 qmak 生成适当的 Makefile。
构建:构建是增量编译,只编译有变化部分。
重新构建:是把所有部分都重新编译。
运行: 有改动则根据已有的 Makefile 进行编译,执行构建和重新构建时如果没有 Makefile,会根据 .pro 文件等生成Makefile后再编译。
所以一般运行顺序应该是:qmake-构建-运行。
VS 打开编译 Qt 工程,找不到宏定义 QTDIR 的解决办法
打开从以前机器创建的 VS解决方案文件.sln, 发现宏定义${QTDIR}
是以前机器的 Qt 安装目录, 并没有同步更新过来。
解决办法:
(1)使用 VS 打开 .user 文件:
(2)修改 QTDIR 宏变量:
Qt 编译配置相关总结的更多相关文章
- linux kernel编译配置相关
1 配置界面的搜索功能 “/”可以进行模块搜索,搜索结果里面还有依赖信息.非常方便. 2 在使用纯内核,不实用module的时候,很多情况下出错是因为相应的特性为编译进内核 案例一: 块设备已经发现了 ...
- 【计算机视觉】关于OpenCV中GPU配置编译的相关事项
[计算机视觉]关于OpenCV中GPU配置编译的相关事项 标签(空格分隔): [计算机视觉] 前一段发现了OpenCV中关于GPU以及opencl的相关知识,打算升级一下对OpenCV的使用,但是发现 ...
- wxWidgets的安装编译、相关配置、问题分析处理
wxWidgets的安装编译.相关配置.问题分析处理 一.介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framewo ...
- OpenCV编译以及QT Creator配置
OpenCV编译以及QT Creator配置 在进行编译前,需下载以下工具和源码: CMake ---- 用于编译: 下载地址; https://cmake.org/ 安装在D:\Program Fi ...
- Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...
- 转载:Centos7 从零编译配置Memcached
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
- [原创]Centos7 从零编译配置Memcached
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
- 让QT编译快一点(增加基础头文件)
姚冬,中老年程序员 进藤光.杨个毛.欧阳修 等人赞同 我是来反对楼上某些答案的.我曾经用MFC写了金山词霸(大约20多万行),又用Qt写了YY语音(大约100多万行),算是对两种框架都比较有经验.纠正 ...
- Qt编译慢吗?
1. “用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有 ...
随机推荐
- SQL Server查询某个表被哪些存储过程调用
问题描述: 今天有个同事问到如何查询某个表被哪些存储过程调用, 然后同事说可以用SQL search查询,自己试了一下确实可以 sqlsearch下载说明地址:https://www.cnblogs. ...
- 【面试】Java中sleep和wait的区别
1.sleep方法是Thread类的静态方法: wait方法是Object类的成员方法 2.sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到 ...
- redis设置、查看和校验密码
Redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式(密码),可以通过编辑[redis.conf]配置文件来启用认证,这里简单介绍一下Redis中如何设置.查看和校验密码(登录验证和操 ...
- Nginx反向代理Tomcat静态资源无法加载以及请求链接错误
在使用Nginx实现Tomcat的负载均衡的时候,项目发布到了Tomcat,Nginx也配置好了, 当访问的时候发现了与预期不符 表现为: 静态资源加载失败 链接跳转地址错误 下面是我错误的配置文件 ...
- java基础(16):正则表达式、Date、DateFormat、Calendar
1. 正则表达式 1.1 正则表达式的概念 正则表达式(英语:Regular Expression,在代码中常简写为regex). 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配 ...
- SPA项目开发之CRUD+表单验证
表单验证 Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则, 并将Form-Item的prop属性设置为需校验的字段名即可 <el-form-item label ...
- mysql - 锁及事务的认识
mysql事务特性:一致性原子性隔离性持久性 //mysql 事务隔离级别 读未提交 读未提交的数据 读已提交 读已提交的数据 串行序列化 一个事务完成了再执行另一个事务 可重复读(数据库默认) 就算 ...
- XSS攻击(跨站脚本攻击)
一.什么是XSS?怎么发生的? XSS(Cross site scripting)全称为跨站脚本攻击,是web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如Javascript),当用户浏览 ...
- Xcode 11新建工程.--iOS 13 SceneDelegate适配
收录文章::::::::::::::: iOS 13 适配要点总结 在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象.原因: Xcode 11 默认 ...
- Oracle有哪些诊断事件
作者:eygle | [转载请注出处]链接:https://www.eygle.com/archives/2004/12/oracle_diagnostics_events_list.html 经常有 ...