IDE/VS2017社区版安装+Qt部署+旧项目迁移

news2024/10/7 10:21:19

文章目录

  • 概述
  • 安装包获取
  • 卸载旧版本
  • 安装过程
  • 首次使用
  • Qt插件配置和使用
    • 插件配置
    • Qt项目创建向导
  • VS2015项目迁移到VS2017

概述

这几天想开始使用glog这个开源日志库,发现其已经在很大程度上使用C++14标准了,而VS2015并不能完全支持该标准。根据一些教程试图使用VS2015编译V0.60版本的glog库,并没有成功。于是想借着这个机会升级下自己使用的VS版本。安装社区版而不是企业版和专业版,想必大家都知道是为了啥。Community版本,其IDE足够我们日常使用,对学生、开源贡献者和个人免费。使用社区版,哈哈,避免提心吊胆…

安装包获取

进入微软官网的 Visual Studio 下载 页面, 滚动页面到底部,点击 下载旧版本,找到 VS2017,点击下载按钮后按照提示登录,如使用 git hub 账户登录。进入后我们发现,页面中根本没有提供社区版现在链接,只有专业版、企业版、工具、运行库等。对相关下载页面小小研究了下,发现,微软只在其官网上提供VS最新版本VS2022的社区版,其他的旧版本的社区版一概不提供。考虑到如此高新的版本将与我的Qt版本不匹配,我不能使用它。那么,我们还可以从哪里获取到VS2017社区版的安装包呢?

哈哈,别着急,我有些强迫症。先下载最新版的VS2022社区版和企业版来看看。事实上发现,通过下载主页上的Community 免费下载、Professional免费试用、Enterprise 免费试用、所有下载/Visual Studio Enterprise 2022/下载,所有下载/Visual Studio Professional2022/下载等链接执行下载,其下载结果基本一致,得到一个名词为VisualStudioSetup.exe的安装文件,大小仅为3696K-3697K。这应该是逼迫你使用在线安装的 “引导程序”,分别执行引导程序后,最终弹出的安装界面如下:

Community 免费下载所有下载/Visual Studio Enterprise 2022/下载
在这里插入图片描述在这里插入图片描述

而在关闭上述子界面后,显示出的主体界面如下;无论使用哪个地方下载的VisualStudioSetup引导程序,它都是一样的。因此不同的引导程序,其区别在于:设置了不同的默认Current安装跳转。

在这里插入图片描述
当看到 Create an offline installation package of Visual Studio for local installation 离线安装说明的相关内容时,你对VS安装引导程序的意图就更加明确了。即使你要从官网下载离线安装包,也要先走VS安装引导程序,如下图,选择 “全部下载后再安装”。
在这里插入图片描述
而且文档中还提到,正规的路子下,The Download all, then install functionality downloads a Visual Studio installation package that is customized to the local machine. Do not try to transfer this downloaded installation package to another computer, as it’s not designed to work that way. Instead, if you want to download an installation package, host it on a network share or an intranet website, and transfer it to or install it on another machine, then you’ll need to create a network layout as described in the create a network-based installation of Visual Studio documentation. 够绝情吧,不想让你把下载的安装包拿到另一台机器上使用。

回到正轨上
估计VS2017新发布的时候,已经是上述这么一套防盗版流程了。现在网络上能下载到的 “VS2017安装包” ,就是当年被网友或者某些组织在保存下来的 “引导程序”。在一些第三方网站能找到 Visual Studio 2017 社区版的存档;在百度网盘中,也能找到其存档,提取码: 7758。下载一个就行,关于安装包获取,就不再多说了。
昨天还跟同事讨论要将VS2015更新到VS2017,今天上午CSDN就给我推荐电子工业出版社&CSDN联合主办的竞赛,竞赛奖励是基于VS2017的《 VC++深入详解(第3版)》书籍,我会心一笑。

卸载旧版本

我的机器上之前装VS2015是费了好大劲的,尤其是Update3的安装,真有点舍不得删除它。在控制面板"卸载或更改程序"界面找到VS2015条目,右键->更改->继续->选择卸载,这个卸载过程会持续15min左右…
在这里插入图片描述

其实,理论上VS2015和VS2017是可以在系统中并存的,就像Qt的多个版本可以同时安装那样。因为VS2015并没有在系统环境变量中添加太多的路径,可以参见《IDE/VS2015及其组件的安装都在我们的OS下增加了什么》这篇文章,可知,系统PATH中仅多出来 C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit; C:\Program Files\Microsoft SQL Server\120\Tools\Binn;两个路径,并没有什么设计VS自身的路径。故此如上推断,但是我没有实验过。而且本次升级目的之一是,不再使用破解的VS2015企业版,而是好好使用社区版。另外在上述文章中也记录了此次卸载VS2015时,哪些组件被从系统中删除了,以及环境变量发生了怎样的变化。

安装过程

确保你的计算机已经接入Internet网路,点击 “安装引导程序” 执行。如果你本地的.Net Framework版本较低(要求使用4.6及以上版本),此时会告警,并给出.Net Framework下载链接。 在弹出的安装界面中选择你需要的组件,这里选择了:
1、Windows - 使用C++的桌面开发
2、其他工具集 - Visual Studio 扩展开发
另外,我后期可能要使用 vcpkg这个c++第三方库管理工具,因此提前在语言包配置中勾选了英语。Visual Studio 扩展开发是必须勾选的,否则VS不能安装插件*.vsix类插件,如VS的Qt开发插件。
在这里插入图片描述
我们在右下角选择全部下载后再安装(即微软官方标称的离线安装模式),先全部下载再安装,可以避免在网络不好的情况下出现中断,而需要从头开始下载。点击最右下角的安装按钮即开始下载过程,如下。
在这里插入图片描述
下载完成后,自动进入安装模式。如下正在安装…
在这里插入图片描述
安装完成如下图,点击启动。
在这里插入图片描述

首次使用

首次使用时,会提示用户登录,如果你没有账户最好去注册一个,否则可能存在30天试用的限制。如果你在一开始选择了 “以后再说”,跳过了登录过程,那么点击软件右上角的登录按钮,可以进入登录或注册界面。
在这里插入图片描述

提示用户设定开发环境,选择你需要的开发环境。最后,等待几分钟的准备过程,VS2017 启动成功!通过 帮助菜单 - 关于,查看当前安装信息。

在这里插入图片描述
本次安装,非常的顺利,没有出现任何异常。写一个HelloWorld测试下你的IDE…

Qt插件配置和使用

插件配置

参见《IDE/在VS2015中集成Qt开发环境》使用联网方式 完成 Qt Visual Studio Tools 插件下载后,在扩展更新界面的底部状态栏上提示,关闭VS2017后将自动更新。
另外这里重复描述几个可参见上述博文的问题:
1、可以编译成功但是编辑器红波浪告警Qt的类找不到,此时需要在 Qt Project Setting -> Paths -> 头文件搜索路径 选项下,编辑-并插入 Qt_INCLUDEPAT宏。或者直接输入,
$(Qt_INCLUDEPATH_);$(QtHeaderSearchPath) 字符串。
2、执行完成步骤1后,先将项目进行一次编译,然后再执行 “重新扫描解决方案”;若不编译而直接扫描,则编辑器红色波浪线无法消除,即使你重启了项目。
3、虽然我卸载了VS2015,但是系统保留了一些配置。如在VS中使用何种方式打开.ui文件,还是VS2015时自定义的QtDesigner。

Qt项目创建向导

在使用 VS2015+Qt VS Tools 的一整年里,我都没有很好的去关注和理解这个Qt项目创建向导。先看个乌龙,在编写《IDE/在VS下DLL动态库的部署和加载问题分析》这篇文章的示例项目时,我猛然发现,IDE为Debug模式的工程自动设置了Qt库信息,但是Release模式下却是空的。这着实让我凌乱了!
先把对向导窗口配置表格的含义写在前边,尽管我是在N次无厘头失败的经验下才明白的!
在这里插入图片描述
如上Git图,在VS2015和VS2017下都是这个样子的。我原以为这是缺陷,其实不然,是我理解错了,缺陷的确有,但不是这里。表格第一列Configuration是可以编辑的,允许输入任意名称;表格第五列Debug,其表达的意思是,若勾选则表示该配置为Debug工程,若不勾选则表示该配置为Release工程,与第一列的配置名称是啥,没有半毛钱关系。早些天这里是我误解的一个关键因素是,对第五列Debug的操作会画蛇添足地相应改变第一列的名称。

回到最初的问题,为什么Release下没有默认的Qt库配置?我回到家里的 VS2015+Qt VS Tools For 2015 环境下,新建Qt项目后,立即查看项目属性,可见附加包含目录、附加依赖项、附加库目录等配置项都自动添加了默认配置(参见本节后半部分)。
但经过多次测试,我发现在 VS2017+Qt VS Tools For 2017的环境下,使用向导默认配置创建项目后,立即查看项目属性时,上述配置,无论Debug/Release模式均为空,需要关闭项目重新打开,才可看到Debug模式下有默认配置,Release下始终没有。为此,我使用 VS2017+Qt VS Tools For 2017 环境,进一步进行了如下测试,
新建Qt项目TestC,在上述默认配置基础上,我将Release名称修改为Release_x,生成项目后关闭重启它。项目属性Release模式下依然没有默认的Qt配置内容。然后,神奇即将发生,
在这里插入图片描述
新建Qt项目TestD,在上述默认配置基础上,我将Release名称修改为my_Release,创建项目后关闭重启它。项目属性Debug/Release模式下都有默认的Qt配置内容啦。新建Qt项目TestE,在上述默认配置基础上,将Release名称修改为my_R,生成项目后关闭重启它。项目属性Debug/Release模式下也都有默认的Qt配置内容。

因此得出些结论
在 VS2017 + Qt VS Tools For 2017 环境下使用Qt应用程序创建向导时,要注意Debug表格列的含义是指定工程为Debug还是Release模式,勾选即为Debug,不勾选即为Release;Configuration表格列的名称是随意修改的,其随Debug表格列的自动名称变化,着实画蛇添足,添乱。最重要的是,Release的配置项,其名称不能使用默认的Release名称或"以Release开头?"的名称,否则将无法为Release工程生成默认的Qt配置(附加包含目录、附加依赖项、附加库目录等)。
如果新建Qt项目后,在附加包含目录、附加依赖项、附加库目录等配置项上看不到Qt的相关配置,可以尝试关闭项目并重新打开。我在VS2017 + Qt VS Tools For 2017的环境下遇到了这样的问题,在VS2015中并没有遇到,但是我同事在VS2015+Qt VS Tools For 2015 环境下遇到过类似问题,当时他的现象是,新建的Qt项目中,无法找到Qt_INCLUDEPATH等宏定义。
还有一点我没验证,当前我在VS2017下使用了msvc2015_x64的Qt库,而不是VS2017的,不知是否与此bug现象有关。

可以参照如下方式,定义VS2017下Qt项目的工程配置,
在这里插入图片描述
按照上述项目创建向导中的设置,查看对应项目的属性页,如下
在这里插入图片描述

附录,正确的Qt库默认配置,
在VS2015+Qt VS Tools For 2015的环境下,新建Qt项目后,立即查看项目属性,可见附加包含目录、附加依赖项、附加库目录等默认配置。在VS2017+Qt VS Tools For 2017的环境下,通过上述消缺方案,也可得到默认配置,如下:

 //C/C++ - 常规 - 附加包含目录
 %(AdditionalIncludeDirectories);$(Qt_INCLUDEPATH_);
 //连接器 - 输入 - 附加依赖项
 %(AdditionalDependencies);$(Qt_LIBS_)
 //连接器 - 常规 -附加库目录
 VS2017此处为空,在VS2015下此处默认为 $(Qt_LIBPATH_);%(AdditionalLibraryDirectories)

如上,VS2017+Qt VS Tools For 2017 的环境生成的默认配置中,连接器 - 常规 -附加库目录配置为空,这是因为在此环境下,Qt_LIBS_ 宏是展开我绝对路径的,可以从附加依赖项的编辑界面 - 宏 - 搜索并查看其定义,如下图:
在这里插入图片描述

VS2015项目迁移到VS2017

先前的项目都是在VS2015下创建的,需要迁移到VS2017下。
P1:
如果直接打开旧的解决方案,并没有与VS2010转VS2015那样直接的提示你重定向项目,而是以一种兼容的模式打开了就解决方案,没有任何提示。只是在项目名称后面标注了是VS2015,如下图。
在这里插入图片描述
如上直接打开旧解决方案后,是可以直接正常编译和运行,试了几个旧项目都没有问题。这是VS功能的一种提升,它允许使用者在高版本的VS软件中以兼容的方式打开低版本的工程和解决方案。

P2:
使用EditPlus等工具打开旧的解决方案文件(*.sln),修改第3行,# Visual Studio 15 为 # Visual Studio 15 保存后关闭。使用VS2017打开修改后的sln文件:
在这里插入图片描述
提示如上重定向。其中Windows SDK 版本下拉列表包含了:安装VS2017时默认SDK组件10.0.17763.0、 安装VS2015时默认组件 8.1,之前我额外安装的WinSDK10.0.14393.0 共3个选项。平台工具集,只有升级到v141和不升级两个选项。点击确定,直接重定向即可,操作后vcproj工程将被修改(其实这个文件也是文本格式的可以直接编辑修改)。如果一个解决方案下有多个项目,则上述重定向项目窗口会一起提示,询问你是否需要更改SDK版本和工具集。

P3:
无论你以何种方式使用VS2017打开了VS2015的解决方案或工程项目,你都可以在具体项目的项目属性配置中进行重新修改。如下图,在配置属性 - 常规 - 目标平台(SDK)版本; 配置属性 - 常规 - 平台工具集,进行设置。
在这里插入图片描述
注意:
并不建议使用太高的SDK版本,那样容易使得你发布的程序在其他较低的OS版本上出现运行问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的Set接口及其实现类(面试题)

Set接口中没有额外定义新的方法,使用的都是Collection接口中声明过的方法。 * 1. Set接口的框架:** |----Collection接口:单列集合,用来存储一个一个的对象* |----Set接口:存储无序的、不可重复的数据 --&g…

【Spring】— 应用案例——基于注解的Spring MVC应用

目录 应用案例——基于注解的Spring MVC应用1.搭建项目环境2.修改配置文件3.修改Controller类4.启动项目,测试应用 应用案例——基于注解的Spring MVC应用 为了帮助读者熟悉掌握Spring MVC的核心类和注解的使用,接下来将以注解的方式对入门案例进行改写…

CPU多核一定比单核性能强吗

在一般人的眼中,多核性能肯定比单核强,处理器核心越多越好,但果真如此吗? 许多人认为CPU 内核越多越好。然而,情况并非总是如此。这就是为什么更多内核并非在所有情况下都是好的选择,这不仅仅是因为在芯片…

数据结构——单向链表(万字讲解)

单向链表(又名单链表、线性链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过从头部开始,依序往下读取。 //单链表的打印 void SLTPrint(SLTNode* phead) {SLTNode* cur phead;while (cur){pri…

数据孤岛如何形成,企业如何破解?

国内企业数据化现状 在数字化时代,数据已经成为了企业不可或缺的重要资产。企业内部部门或系统之间存在着数据割裂现象,导致数据无法流通和共享,从而形成数据孤岛的现象。对于企业来说,数据孤岛问题是十分普遍的,它阻…

如何在项目管理中获得更多权威和影响力?这篇文章告诉你!

1 透明力 信息力和感知力是对环境的观察、观察、再观察,这些 观察的结果只有透明出来,才能发挥效用。你要想法把你看到的问题可视化,让决策者和团队都能看到问题。即透明的力量。 1.1 怎么运用透明的力量呢? 我曾在某团队经常听…

win11 系统安装 wsl

1. 打开虚拟设置 在【开始】搜索【启用或关闭 Windows 功能】,打开Windows 功能对话框,勾选“适用于Linux的Windows子系统”和“虚拟机平台”两个选项。 2. wsl 安装 管理员模式启动powershell 设置wsl版本:wsl --set-default-version 1 更新…

业务 IT 一体化:华为云 SaaS Package 做到了

SaaS 这个概念在近两年可谓十分火热,特别是进入到了后疫情时代,似乎离不开 SasS。然而很多人并没有真正理解 SaaS 的概念,对 SaaS 的认知还是比较片面。 你要弄清 SaaS,首先就绕不开 laaS 和 PaaS。下面这张图可以很直观地让你明…

leetcode40. 组合总和 II (java-回溯算法)

组合总和 II leetcode40. 组合总和 II题目描述解题思路代码演示 回溯算法专题 leetcode40. 组合总和 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/combination-sum-ii 题目描述 给定一个候选人编号的集合 candida…

【滤波】扩展卡尔曼滤波器

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第11章节11-Extended-Kalman-Filters(扩展卡尔曼滤波)。 %matplotlib inline#format the book import book_format book_format.set_style()我们发展了线性卡尔曼滤波器的理论。然后在上两…

Fiddler之日常使用简介

目录 前言: Fiddler界面简介 一、Fiddler抓取http、https请求配置 二、抓取指定域名会话 三、http请求统计试图 前言: Fiddler是一款功能强大的Web调试工具,它可以帮助开发人员在开发和测试过程中捕获、修改和检查HTTP请求和响应。 使用Fiddl…

Python基础(11)——Python循环(while、for)

Python基础(11)——Python循环(while、for) 文章目录 Python基础(11)——Python循环(while、for)目标一. 循环简介1.1 循环的作用1.2 循环的分类 二. while的语法2.1 快速体验 三. w…

全球开源 AI 游戏开发挑战赛,只等你来!

我们在之前的文章中 预告过 (*划重点,IP 属地法国):7 月初,我们将举办一次与 AI 游戏相关的黑客松活动,这是有史以来的首次开源游戏开发挑战赛,借助人工智能工具释放你的创造力,一起打破游戏开发的边界。 比…

Python自动化测试 软件测试最全教程(附笔记),看完就可就业

最近看到很多粉丝在后台私信我,叫我做一期Python自动化测试的教程,其实关于这个问题,我也早就在着手准备了,我录制了一整套完整的Python自动化测试的教程,都上传在B站上面,大家有兴趣的可以去看一下&#x…

Redis 2023面试5题(二)

一、Redis key没设置过期时间却被redis主动删除了 如果一个 Redis 键没有设置过期时间,那么 Redis 无法判断该键是否应该自动删除。因此,如果一个没有设置过期时间的键被 Redis 主动删除了,可能是以下原因之一: 内存不足&#x…

工程机械比例阀电流采集方案

工程机械的需求量变得越来越大,而关于工程机械,其比例阀的控制问题不容忽视。比例阀是一种新型的液压控制装置。在普通压力阀、流量阀和方向阀上,用比例电磁铁替代原有的控制部分,并按输入的电气信号连续、按比例地对油流的压力、…

VUE 2X 条件列表渲染 ⑧

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs条件渲染列表渲染 基本列表 Key的原理 列表过滤 列表排序 列表更新小问题 监测数据改变的原理~对象 V u e S e t VueSet VueSet的…

常见web中间件漏洞复现总结

文章目录 IISPUT漏洞iis6.0 解析漏洞IIS短文件漏洞远程代码执行(RCE-CVE-2017-7269)iis7.x文件解析漏洞HTTP.SYS远程代码执行 (MS15-034) apache未知扩展名解析漏洞AddHandler解析漏洞目录遍历漏洞Apache HTTPD 换行解析漏洞(CVE-2017-15715) Nginx文件解…

RabbitMQ入门学习笔记

文章目录 RabbitMQ学习笔记前言1、RabbitMQ概述1.1 MQ概述1.2 RabbitMQ概述 2、RabbitMQ的安装3、RabbitMQ初体验4、工作队列4.1 消息应答4.1.1 消息应答简介4.1.2 消息手动应答 4.2 队列和消息的持久化4.2.1 队列持久化4.2.2 消息持久化 4.3 消息分发4.3.1 不公平分发4.3.2 预…

[进阶]Java:线程池、处理Runnable、Callable任务、使用Executors得到线程池

什么是线程池? 线程池就是一个可以复用线程的技术。 不实用线程池的问题? 用户每发起一个请求,后台就需要创建一个新线程来处理,下次新任务来了肯定又要创建新线程处理的, 而创建新线程的开销是很大的,并…