Visual Studio 2015 + cmake编译QT5程序

概述

  • 由于QT的集成开发环境QTCreate,在代码调试功能上远不及Visual Studio方便,因此,在Windows平台,可以使用Visual Studio来开发调试QT程序,本文章就主要介绍下,如何使用CMAKE编译QT5程序,并使用Visual Studio 2015来运行调试QT程序。

准备工作

  • 首先安装QT5, 我使用的是QT5.9。然后安装Visual Studio 2015和cmake,cmake要配置环境变量。
    在这里插入图片描述
    在这里插入图片描述
  • QT编译器介绍
    • MSVC:Microsoft Visual C++ Compiler,即微软自己的编译器。
    • MinGW:Minimalist GNU for Windows,它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集。

使用QT create创建工程

  • 首先我们要用Qt create创建一个工程,完成界面布局。
    在这里插入图片描述
  • 选择编译器的时候要注意,因为我们要使用Visual Studio进行编译调试。因此这里编译器必须选择MSVC,我这里就选择MSVC2015 32位的编译器。
  • 在UI界面完成简单布局,就可以关掉Qt Create了。
    在这里插入图片描述

设置QT环境变量

  • 接下来需要设置下QT的环境变量。找到QT的安装目录,然后找到编译器所在目录。
    在这里插入图片描述
  • 可以看到有好几个编译器,我们刚才创建工程时选择的是MSVC2015,这里就选择MSVC2015对应的目录。
  • 然后要一直选到Qt5Config.cmake文件所在的目录
    在这里插入图片描述
  • 复制目录设置环境变量
    在这里插入图片描述
    在这里插入图片描述
  • 这里注意,变量名一定要写成Qt5_DIR,如果使用的是QT4,变量名要写成QTDIR。路径最好不要包含中文。
  • 设置完重启下电脑。

创建cmake文件

  • 创建一个编译目录build_x86,和一个cmake文件
  • 直接看下目录结构
  •   ├── build_x86
      ├── CMakeLists.txt
      └── demo1
      	├── demo1.pro
      	├── main.cpp
      	├── widget.cpp
      	├── widget.h
      	└── widget.ui
    
  • CMakeLists.txt内容
  •   cmake_minimum_required(VERSION 3.10.0)
    
      project(QtDemo)
    
      #开启MOC、RCC和UIC,则会在预处理之前先进行MOC、RCC和UIC操作
      set(CMAKE_AUTOMOC ON)
      set(CMAKE_AUTORCC ON)
      set(CMAKE_AUTOUIC ON) 
    
      #查找需要的Qt包
      find_package(Qt5 REQUIRED Core Gui Widgets)
      # 将各个文件夹下的所有文件打包
      SET(SRC_LISTS ${PROJECT_SOURCE_DIR}/demo1/main.cpp ${PROJECT_SOURCE_DIR}/demo1/widget.cpp)
    
      # 包含头文件所在目录
      include_directories(${PROJECT_SOURCE_DIR}/demo1)
      
      # 去除命令框
      if(MSVC)
      	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
      endif()
      
      # 生成可执行程序
      add_executable(QtDemo ${SRC_LISTS})       
    
      # 链接QT库
      target_link_libraries(QtDemo Qt5::Core Qt5::Gui Qt5::Widgets)
    

编译运行

  • 在build_x86目录下打开cmd,执行以下命令
  •   cmake -G "Visual Studio 14 2015" ..
      cmake --build ./ --config Debug
    
  • 如果成功,会在build_x86\Debug目录下生成可执行程序。
    在这里插入图片描述
  • 现在还无法运行,我们需要将QT安装目录下的库拷贝过来。
    在这里插入图片描述
  • 可以使用Everything全局搜索下
    在这里插入图片描述
  • 我们选择的是MSVC2015编译器,因此要拷贝对应编译器下的动态库
    在这里插入图片描述
  • 这时候直接双击可执行程序,就可以运行了
    在这里插入图片描述

使用VS2015进行调试

  • 如果需要调试,直接双击build_x86目录下的sln文件,就可以用VS2015打开了。
    在这里插入图片描述
  • 现在就可以直接在VS中调试QT程序了
    在这里插入图片描述
  • VS2015中无法打开QT的UI界面,因此如果还需要在UI界面继续添加控件,只需要双击工程下的pro文件,用Qt create打开重新设置界面就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5107.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA真的没出路了吗?】

2023年了,转行IT学习Java是不是已经听过看过很多次了。随之而来的类似学Java没出路、Java不行了、对Java感到绝望等等一系列的制造焦虑的话题也在网上层出不穷,席卷了一大片的对行业不了解的吃瓜群众或是正在学习中的人。如果是行外人真的会被这种言论轻…

【教程】使用ChatGPT制作基于Tkinter的桌面时钟

目录 描述 代码 效果 说明 下载 描述 给ChatGPT的描述内容: python在桌面上显示动态的文字,不要显示窗口边框。窗口背景和标签背景都是透明的,但标签内的文字是有颜色。使用tkinter库实现,并以class的形式书写,方…

GPS时间序列分析---剔除跳跃点,拟合时间序列

通常利用GPS时间序列进行数据分析时,会遇到大地震的发生,这个时候会导致GPS的观测结果出现很大的跳跃值,这对后续的数据处理和分析带来了困难。这里分享一个最近了解的,可以用于处理这一问题的工具包---TSAnalyzer。下面主要介绍该…

Adobe:当创意工作遇上生成式AI

放眼全球IT行业,当前最炙手可热的领域是什么?答案显然只有一个:因为ChatGPT而火爆全球的生成式AI(Artificial Intelligence Generated Content,简称AIGC),又称人工智能生成内容。那么当创意设计…

再学一下Feign的原理

简介 Feign是Spring Cloud Netflix组件中的一个轻量级Restful的HTTP服务客户端,它简化了服务间调用的方式。 Feign是一个声明式的web service客户端.它的出现使开发web service客户端变得更简单.使用Feign只需要创建一个接口加上对应的注解, 比如FeignClient注解。…

Go分布式爬虫学习笔记(十四)

文章目录14_context为什么需要Context?级联退出Context 的使用方法。context.ValuecontextContext 最佳实践Context 底层原理14_context Never start a goroutine without knowing how it will stop。 如果你不知道协程如何退出,就不要使用它。 为什么需要Context?…

家政服务系统APP小程序需具备哪些功能?

由于工作忙碌或者是懒人经济作祟,现代人对于家政服务的需求直线上升。而且互联网技术深入生活的方方面面,让上门家政服务系统开发成为很多线下家政公司转型互联网的方式,那么开发一款家政服务系统APP小程序需具备哪些功能呢? …

逻辑回归 算法推导与基于Python的实现详解

文章目录1 逻辑回归概述2 逻辑回归公式推导与求解2.1 公式推导2.2公式求解3 基于Python的实现3.1可接收参数3.2 完整代码示例1 逻辑回归概述 逻辑回归(Logistic Regression)是一种用于分类问题的统计学习方法。它基于线性回归的原理,通过将线…

【软考——系统架构师】架构、系分、软设的区别和联系

🔎这里是【软考——系统架构师】,关注我考试轻松过线 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 文章目录👀三科相同点👀三科不同点--上午题&am…

CISAW-CISDR灾难备份与恢复专业级认证

证书样板: 认证机构 中国网络安全审查技术与认证中心(英文缩写为:CCRC,原为中国信息安全认证中心)于 2006 年由中央机构编制委员会办公室批准成立,为国家市场监督管理总局直属事业单位。依据《网络安全法》 《网络安…

Java每日一练(20230401)

目录 1. 合并K个升序链表 🌟🌟🌟 2. 最长有效括号 🌟🌟🌟 3. 分割回文串 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 …

Linux系统一键安装最新内核并开启 BBR 脚本

本脚本适用环境 系统支持:CentOS 6,Debian 8,Ubuntu 16 虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 内存要求:≥128M 更新日期:2022 年 5 月 11 日 关于本脚本 1、本脚本已在 蓝易云 上…

后端Springboot框架搭建APi接口开发(第二章)

上一章我讲述了如何使用Mybatis操作数据库。这一章我讲述如何利用Sptring框架搭建API接口 第一节:封装SqlSessionFactory工具类 在API操作数据库大量调用SqlSessionFactory,因此应将SqlSessionFactory封装成工具类供方法随时调用 在文件结构中的util文…

前端直接生成GIF动态图实践

前言去年在博客中发了两篇关于GIF动态生成的博客,GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探,在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…

MySQL主从复制、读写分离(MayCat2)实现数据同步

文章目录1.MySQL主从复制原理。2.实现MySQL主从复制(一主两从)。3.基于MySQL一主两从配置,完成MySQL读写分离配置。(MyCat2)1.MySQL主从复制原理。 MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据…

设计模式之门面模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、门面模式是什么? 门面模式是一种结构型的软件设计模式,也叫外观模式,它提供了统一的接口去…

程序员的天花板到底有多高?

程序员是很多人眼里的职业天花板,毕竟薪资水平、发展前景摆在那里,而且,一个又会debug又会修电脑(划掉),还会费心为你制造浪漫的程序员,有谁不喜欢呢? 但现实中很多程序员都焦虑担忧…

从0使用TCP手撸http服务器六

html模板设计: 上篇我们说到通过路由去返回不同的html页面,如果每一个页面都是一个数组的话,那么我们可能需要很多数组,里面很多内容都是一样的,这样子会浪费我们单片机很多flash,我们需要把共同的部分固定…

神经网络之反向传播算法(加入Nesterov动量的误差反向传播算法)

文章目录1、Nesterov动量2、结合Nesterov动量的误差反向传播算法3、算法实现3.1 训练过程3.2 测试过程4、参考源码及数据集1、Nesterov动量 在动量法提出不久之后,Nesterov动量也随之被提了出来,此方法属于动量法的进一步发展,与动量法不同的…

基于windows11配置深度学习环境包含WSL2配置ubuntu20.04

基于windows11配置深度学习环境包含WSL2配置ubuntu20.04目录平台WSL2 系统准备(Windows Subsystem of Linux)安装WSL2基于WSL2中的Ubuntu安装CUDA和cudnnCUDA 安装目录 平台 系统 : windows11 专业版 CPU Intel I7 8750hq 显卡:Nvidia GTX1060移动端 显卡驱动版本…