msvc++工程之vs版本升级及工程目录规范
为什么要升级msvc++工程版本
对msvc++工程进行vs版本升级,一方面是可以使用较新的C++标准及对64位更好的支持。
首先你需要对msvc++ project文件有一定的了解,主要是vcxproj和vcxproj.filter这两个文件,升级的时候需要手动修改sln和vcxproj文件。
vs(visual stuiod)中vc++工程的Filter和Folder及vcxproj知识 - 知乎 (zhihu.com)
msvc的工程规范(sln和vcxproj)
项目根目录
src/
vs2012/
更多的vs版本/
vs2022/
lib/
...
以vs版本号做文件夹的命名好处是因为同一个c++工程在不同的vs版本上可能会有兼容性的问题,再展开不同的vs版本目录结构都是如下:
项目解决方案.sln
project1目录
project1.vcxproj
project1.vcxproj.filters
project2目录
project2.vcxproj
project2.vcxproj.filters
......
props目录
xx_debug.props
xx_hybrid.props
xx_editor_lib.props
升级vs的版本步骤
- 建议复制原来的sln和vcxproj文件
- 修改新sln中的vs的版本号
- 改完后使用新版本的vs打开新的sln,就会提示你对包含的project进行升级,点击升级即可
- 修复新版本下的语法、编译、链接等等错误
- 当然在真实的商业大型项目中,升级vs版本的过程是很痛苦及漫长的,甚至会出现无源码的工程无法升级。
sln文件头标识vs版本号的内容如下:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1
例个例子,我把3个代码量很少的学习工程,从vs2012升级到vs2022
Console类型的cpp项目升级很顺利,Windows类型的cpp工程也很顺序,mfc升级后,运行出错如下:
Build started...
1>------ Build started: Project: mymfc, Configuration: Debug Win32 ------
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(480,5): error MSB8041: MFC libraries are required for this project. Install them from the Visual Studio installer (Individual Components tab) for any toolsets and architectures being used.
1>Done building project "mymfc.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
通过报错信息可知是缺少mfc环境,需要安装。
不同vs版本之间的差异
升级完之后,对比不同版本的sln及vcxproj之间的diff,主要集中在Toolset及平台设置方面,当然是从vs12及之后的版本进行升级。
msvc++工程之vs版本升级及工程目录规范的更多相关文章
- Maven项目工程目录
maven工程目录规范: src/main/java 存放项目的.java文件 src/main/resources 存放项目的资源文件,如spring.hibernate配置文件 src/t ...
- FrameWork逆向工程之MotioPI
在BI项目建设的过程中我们一般都是有备份的,而且这个是必须有的!特别是例如ETL Model,还有Data Model这一类的元数据,这些东西如果我们没有备份,而恰好的我们的开发模型又在某一天离我们而 ...
- Eclipse下的java工程目录
对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在Eclipse编写Java程序中,出现频率最高的错误很可能就是路径问题. 这些问题原因其实都是一个,就是关 ...
- 转载:Eclipse下的java工程目录
原文链接:https://www.cnblogs.com/milantgh/p/4029003.html 对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在 ...
- iOS逆向工程之Theos
如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先 ...
- nodejs学习笔记一:安装express框架并构建工程目录
偶遇node是在一个阳光明媚的上午,无意间打开博客看到一片关于nodejs的介绍,通读全篇后,心情跌宕起伏,哎呀,这么好的东西我竟然现在才知道,这是最气的,于是马上开始制定学习nodejs计划,好了, ...
- 初始化 Gradle 工程目录(转自: 隔叶黄莺 Unmi Blog)
最近重新在 Eclipse 中打开旧的 Maven 项目,总有些什么错误,备受折磨.期间试手了 Ant+Ivy, 现今试用了下 Gradle,感觉不错,它应该才是我真想要的,Maven 差不多该扔到一 ...
- android的helloworld工程目录学习
android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1. Src文件夹 Src文件夹包含java源 ...
- Android Studio工程目录介绍
来自知乎: Android Studio工程目录结构 .gradle 是gradle运行以后生成的缓存文件夹. .idea 是android studio/Intellij IDEA工程打开以后生成的 ...
- C#.bat文件清理工程目录
另外一种方法是自己写一个bat文件来清理,非常方便,下面是自己写的验证过比较好用的方法. bat文件内容如下: echo 正在清理VS2010工程中不需要的文件 echo 请确保本文件放置在工程目录之 ...
随机推荐
- MySQL中的Join 的算法(NLJ、BNL、BKA)
本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 目录 摘要 什么是Join Index Nested-Loop Join Block Nested-Loop Join ...
- 2022-04-19:A*算法, 过程和Dijskra高度相处, 有到终点的预估函数, 只要预估值<=客观上最优距离,就是对的。 预估函数是一种吸引力: 1)合适的吸引力可以提升算法的速度; 2)吸引
2022-04-19:A*算法, 过程和Dijskra高度相处, 有到终点的预估函数, 只要预估值<=客观上最优距离,就是对的. 预估函数是一种吸引力: 1)合适的吸引力可以提升算法的速度; 2 ...
- 【设计模式】使用 go 语言实现简单工厂模式
最近在看<大话设计模式>,这本书通过对话形式讲解设计模式的使用场景,有兴趣的可以去看一下. 第一篇讲的是简单工厂模式,要求输入两个数和运算符号,得到运行结果. 这个需求不难,难就难在类要怎 ...
- 创建CMDB项目
- k8s calico网络
- 【爬虫+数据清洗+可视化】用Python分析“淄博烧烤“的评论数据
目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...
- 移动App测试概述:移动App特性
移动App测试概述:移动App特性 移动App在现代人的日常生活中扮演着越来越重要的角色,因而对于它们的质量和稳定性的要求也越来越高.为了确保App的质量,开发商需要进行充分的测试和检验.本文将讨论移 ...
- 现代C++学习指南-类型系统
在前一篇,我们提供了一个方向性的指南,但是学什么,怎么学却没有详细展开.本篇将在前文的基础上,着重介绍下怎样学习C++的类型系统. 写在前面 在进入类型系统之前,我们应该先达成一项共识--尽可能使用C ...
- CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解
前言 一个合格的事务处理系统,应该具备四个性质:原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(durability).隔离性保证了一个活跃的事务 ...
- C#语言async, await 简单介绍与实例(入门级)
本文介绍异步编程的基本思想和语法.在程序处理里,程序基本上有两种处理方式:同步和异步.对于有些新手,甚至认为"同步"是同时进行的意思,这显然是错误的. 同步的基本意思是:程序一个个 ...