【本文案例采用VS2022版本】
常言道:工欲善其事,必先利其器。初学者虽然不能开发自己的IDE,但至少需要了解自己所用IDE的基本功能和大致实现流程。本文或许可以勉强用作Visual Studio的入门级介绍。
【正文】
基本的新建操作我就不多说了。此处我已新建了一个解决方案名为console。在console下有一个项目名为test。当解决方案和项目创建好后。你会看到以下目录:
.sln是solution解决方案的简称。一个很自然的问题就出现了,这里面是啥?我们选中它单击右键
通过code(我安装了VSCode)打开后,可以看到如下界面:
下面的一大堆信息表示一些全局变量的加载。暂忽略不看。
当我们打开VS,选择打开console解决方案时,打开的其实是sln,VS在sln文件里找到该解决方案的项目属性文件vcxproj,在本例中就是找到这个路径:console\console.vcxproj。接下来一个很自然的问题就是这个vcxproj文件里有什么?它有啥用?
同上,用code打开console.vcxproj后可以看到
......(此处省略n行代码。)
vcxproj里面包含了工程中所有的文件和它们的配置信息。比如上面红线划着的,表示include的路径,它表示,如果要想打开这段源代码(test.cpp),需要在同级目录下找到test.cpp。如果你的cpp换了位置,而vcxproj中没有更改include path的话就会出现这样的情况:
我在vcxproj目录下新建一个test文件夹并把test.cpp放进去
此时再打开.sln 你会在主窗口看到如下信息:
解决办法就是把路径更改一下:
test.h同理。而除了include path之外,还有警告等级 warning level、库目录、是否用优化等,这些编译信息都在vcxproj中,当我们更改了项目并保存后,vcxproj中对应的信息就会更改,如果不想在vcxproj中手动更改配置,这儿有一个更亲民的方法:
在属性配置页面可以更改项目配置,具体怎么配置不属于本文范畴。如果你真的很想知道如何自己配置环境、导入第三方库之类的,建议搜索一下环境配置方面的内容。网上教程太多了。
而vcxproj.filters
同上,用code打开它:
filter顾名思义是过滤器,该文件指定哪些属于头文件、哪些是资源文件、哪些是源文件等。
而vcxproj.user
同上,用code打开它:
它是本地化用户喜好配置,记录用户的个性化配置。具体可参考微软官方文档说明。
总结上述,vcxproj中记录的就是一切项目的属性。.sln打开它获取配置属性
此时,项目已经成功打开,并且你已经完成了代码的编写。现在你运行该程序。
现在,如果你是用x64平台生成了exe,那么你会发现多了个x64的文件夹。
点击进入该文件夹
我是以Debug方式生成的exe,所以可执行文件在Debug里
(如果你没有以Release方式编译程序,不会出现下面的Release文件夹,关于Release和Debug方式的区别见后文)
进入Debug文件夹后可以看到:
其中pdb文件表示Program Debug Database,其中包含了项目调试的具体调试信息。对于小工程来说这些pdb用处不大,我们一般只关注exe。但是,一旦工程量很大,比如一个项目有几千个人在做,编译时间会很长,根据调试信息,可以看出哪些代码是已ok了的。因为只有当所有编译和链接(关于编译和链接等下再提)都完成后,也就是所有pdb文件都生成后,才会生成exe文件。
刚才我们在x64文件夹里看到了Debug模式下的exe和pdb,但是当我们打开console文件夹,
发现这里也有一个x64文件夹,进入该文件夹后继续进入Debug文件夹可以看到,除了exe和pdb之外,还多了很多东西。
tlog和log文件是日志文件
那个exe.recipe文件我也不知道是什么,网上也没找到答案...不过可以肯定的一点是,它不是一个可执行文件...
至于obj和ilk文件,就要讲到编译的过程了。笔者才疏学浅,知之也不深,就推荐一下这个链接。
http://t.csdn.cn/LQ8LN
最后,简单说一下release和debug方式的区别:
首先,debug通常被称为调试版本,它包含调试信息,并且不做任何优化,便于程序员调试程序。而release是发布版本,它一般是做了优化。从而方便广大用户使用。因此,debug下的exe的往往比release下的exe大很多,而且运行速度也会慢一些。
注意它们的大小
如果要深入了解两者的差别,建议再查一些其他的资料
笔者推荐这一篇
http://t.csdn.cn/3AM3l
OK,本文到这就结束了。不同的vs版本也许在细节上会有不同之处。笔者才疏学浅,如本文有不妥之处,还请指正。
#-----2022年3月30日-----#