这几天想开始使用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…
参见《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。
在使用 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下。
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版本上出现运行问题。