VS2019新建项目、解决方案、多项目生成、防止文件污染
0-更新时间
2020.12.16 防止文件污染
之前因为刷题,多多少少用过一点VS2019,但是因为用惯了Jetbrains公司的IDE,所以一直在用Clion。希望通过这一次学习,能够熟练使用VS2019.
1-新建项目
首先就是新建项目,是下面的界面
我们一般会使用空项目
和控制台应用
这两个,空项目是最常用的,里面没有任何源程序。控制台应用通常没有可视化界面,就是单纯的通过字符串来显示或监控程序,里面会自己包含一些示例代码。控制台应用的用户往往只关心数据,不关心界面。
参考:【使用vs编译程序选择新建”空项目“与”win32控制台应用程序“的区别。】
https://blog.csdn.net/u013409439/article/details/45274291
点击空项目
后,进入配置项目界面,如下
一开始不太清楚【解决方案】和【项目】的区别,查阅资料后才知道:在VS中,新建项目时会默认创建同名的解决方案。
项目其实就是程序的容器,这种程序就是编写出来为了实现这个项目的最终目的(比如计算银行利息)。某个项目的所有文件都存储在相应的项目文件夹中,关于**项目的详细信息存储在一个扩展名为.vcproj的xml文件中,该文件同样存储在相应的项目文件夹中。**项目文件夹还包括其它文件夹,它们用来存储编译及链接项目时所产生的输出。
解决方案就是存储与一个或多个项目有关的所有信息的文件夹,这样就有一个或多个项目文件夹是解决方案文件夹的子文件夹。**与解决方案中项目有关的信息存储在扩展名为.sln和.suo的两个文件中。**当创建某个项目时,如果没有选择在现有的解决方案中添加该项目,那么系统将自动创建一个新的解决方案。
也就是说,一个项目必然是会在一个解决方案内,一个解决方案内至少包括一个项目。
上面图中,【位置】栏里,D:\CodeProject\CppProject
这个路径其实是解决方案的路径,如果在上图中点击【创建】按钮,VS2019会在该路径中新建一个Project1
的文件夹(解决方案文件夹,默认与创建的项目同名)。在D:\CodeProject\CppProject\Project1
的路径下,还有一个Project1
文件夹(项目文件夹)。
如果先修改【项目名称】,那么最后一栏的【解决方案名称】也会变化,但是直接修改【解决方案名称】的话,【项目名称】是不会变的。
如果选择【将解决方案和项目放在同一目录下】,那么【解决方案名称】就会变灰。
2-防止文件污染
当创建项目成功后,就会进入IDE,很迷惑上面栏里Debug
、Release
、x64
、x86
是什么东西。
经过查询以后才知道:
Debug
和Release
只是两个编译的选项而已,是编译器所要进行工作的一系列指令,它们只是编译指令的集合的名称。
Debug允许对源码进行调试,而Release则不对源码进行调试。Debug和Release,主要是针对其面向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优,为用户的使用提供便利。
x64
和x86
它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。
根据以上情况,编译模式(Debug
、Release
)和平台选择(x64
、x86
)相互搭配以后就是4种组合,每一次生成解决方案都会生成两个文件夹,比如当前编译器选择Debug
和x64
,在这种模式下,就会按照默认的输出目录$(SolutionDir)$(Configuration)\
生成一个Configuration文件夹,其中SolutionDir是当前解决方案的路径,Configuration代表当前的编译模式。在默认中间目录$(Configuration)\
中保存日志和临时文件。也就是说,会在解放方案文件夹内,以及项目文件夹内,都产生一个Debug文件夹。
那么在查找文件时,就容易弄混哪里是中间文件,哪里是工程文件。
下面,来修改一下输出目录与中间目录的保存路径。
点击【解决方案资源管理器】中的项目,右键选择【属性】,在这里就能修改输出目录与中间目录的保存路径。注意修改的时候,在上面的【配置】与【平台】两栏中一定选择【所有配置】、【所有平台】。这样就不用区分两两搭配的四种情况了。
【输出目录】修改为:$(SolutionDir)../bin/$(Platform)/$(Configuration)
,表示在解决方案目录的上一级目录中设置bin
文件夹,如果没有该文件夹会自动创建,将输出文件、核心程序(就是exe文件)放到bin目录里,同时按照Platform(x64
、x86
)来新建文件夹,并且在平台文件夹再根据编译模式(Debug
、Release
)再分别建立文件夹。
【中间目录】修改为:$(SolutionDir)../temp/$(Platform)/$(Configuration)/$(ProjectName)
,表示在解决方案目录的上一级目录中设置temp
文件夹,temp文件夹下按照平台再分,每个平台文件夹下按照编译模式再分文件夹,最后在每个配置文件夹下新建当前项目的独立文件夹。
为什么不在【输出目录】中也设置$(ProjectName)
产生独立项目文件夹呢?就是因为,在同一解决方案下不同项目【生成】后,各自项目的输出文件以自己项目名称来命名,易于区分,如下图所示,HelloCpp和HelloWorld都属于同一解决方案。
3-多项目生成解决方案
当一个解决方案里有多个项目时,就要设置谁作为启动项目了。设置为启动项目的项目会被粗体表示。想要更换启动项目,直接选中另一个项目,右键【设为启动项目】,这样操作以后,再右键【生成】才是自己项目的文件
时,就要设置谁作为启动项目了。设置为启动项目的项目会被粗体表示。想要更换启动项目,直接选中另一个项目,右键【设为启动项目】,这样操作以后,再右键【生成】才是自己项目的文件