VS工程里的文件都是啥?如何打包? 2015-03-04
打完补充:以下内容全部是我一家之言,只是愿意分享,内容如有不妥还请见谅。
======================================================
刚才接收了一份代码,庞大的sdf文件也传过来了。如果咱们想分享一份代码的话,其实只需要很少的文件即可。我把我对VS工程里各种文件的认识分享出来,如有错误还请指正,我也是一知半解,欢迎探讨。
我以自己的C语课设为例,大家打开文件夹后,有这些:
第一个文件夹里就是源代码。理论上,“ball_moving”是“项目”的名字。(因为我的这个工程只包含一个项目,咱们现阶段的大部分工程皆是如此。所以写单文件程序时,使用code::blocks等不需要工程的IDE会比较方便。)
第 二个.sln文件就是VS的工程文件。这个工程文件相当于是一个总目录,它组织了整个工程的一些信息。.sln是VS2010/2012/2013 /2015等较新VS版本的工程文件,如果大家用的是VC6.0,那工程文件就是.dsw。请注意,VC6.0是无法打开.sln文件的。而用VS打 开.dsw也可能会遇到兼容性问题。所以推荐大家使用VS。
其实.sln文件也只是个文本文档,里面的内容如图所示,是可以随意改的(雾)。
第三个就是大家熟悉的.doc文件了,它和这个工程没什么关系,只是一个课设作业要求的手册。说实话,我倒是极力建议大家在把自己的代码给他人看之前,先为TA写好一份简单的程序流程说明。这样可以节省双方大量的时间。
咱们现在打开"ball_moving"文件夹。
如果你对我的课设有印象,你会记得我非常逗比地把每个函数都拆成了一个.cpp文件,所以为了反映普遍情况,咱们化简如下:
第一个是.h文件,就是头文件。这个头文件里的内容,和咱们平时在int
main()的上边所写的那些"声明"并无二致。这样写是为了…较真。其实要是真的想较真的话,应该是一个.cpp文件(模块)(编译出的.lib)专配
一个.h文件(接口),暂且忽略这个逗比的事情。
第二个.cpp文件就是所有的源代码啦。这个.cpp文件可以用任意文本编辑器修改。我极力建议大家不要用Word保存代码,最好也别用txt文件保存代码。尤其是你想把代码发给别人/交作业等等情况。请保持对接收者的信任,用其他格式存代码必然增加双方的工作量。当然,这只是我的一种个人态(dou)度(bi),大可不必在意。
.dat 和 .csv 文件是…我选择的存档和榜单的格式,和文本文件没啥区别,大家感兴趣的话可以了解一下,用txt也行。选择.dat的原因是一般情况下用户就不会乱改了(雾)(别问我,这主意是投稿时候管理员给我提出来的),.csv的话是方便对成绩进行排序。
然后ball_moving.rc 和 .ico文件是配套的。他们的全部使命就是给我的程序加上可爱、真诚、善良、勤劳、勇敢、美丽、温柔、知性的二胡卵子(鸟)。如果你不想给程序加自定义图标的话是没有此类文件的。
再看比较重要的两位。
vcxproj.filters是项目的虚拟目录,也就是这个:(图片来自网络)
所以最好把它带上。
.vcxproj想必你已经猜出它的功能了,它是项目的“目录”,和.sln文件的作用差不多,所以也是一定要带上的。
好了,以上文件就是一个VS的工程所必备的文件,总结来说:
.sln
项目名的文件夹
.vcxproj
.vcxproj.filters
(若干).cpp
(如果有).h
其他也许会存在的杂项
好了,如果是要交作业/把代码共享给别人的话,这些文件就够用了。
哪些文件不需要呢?
大家可能注意到了,工程文件夹下总是有个巨大无比的.sdf文件,体积(我见过的)从几M到上百M不等。你要是问我它是干啥用的…我也不知道。大概跟调试有关吧,比如你在哪加了几个断点之类的信息。
那些.suo和.opensdf之类的文件,打包的时候删掉就好。
另
外,工程文件夹里的Debug / Release
文件夹都是可以删掉的,那些文件夹里是你编译出的.exe以及等等辅助文件。VS里的“清理解决方案”的功能就类似于把这些文件夹清空。这些文件夹里的文
件…如果你真的感兴趣的话。exe文件就是最后出来的可执行文件,.ilk文件是连接时生成的文件,.pdb保存调试信息用的。我目前电脑里没有更多工程
可供参考了…印象中有时候还会有.obj文件,那些就是编译器编译代码生成的“目标文件”,然后连接器在把目标文件和库连接在一起。如果用过VC6.0,
还会记得在“运行”按钮左侧有两个按钮,那俩一个是编译、一个是连接。在VS里就二合一了,而且默认设置好像会自动删除掉.obj文件。
精简一些总是好的,如果只打包了必要的文件,整个压缩包的大小会以K计,而不是以若干M来计。好比笔记本的屏幕,脏的时候也能用,干净的时候还是能用,但我总是愿意把屏幕擦得干净一点,而不是留下许多奇奇怪怪的污渍。
如
果大家去看EasyX官网的示例代码,会发现有一个游戏名叫“大丰收”,那个程序的打包方式基本是此文所倡导内容的反例。以我个人逗比的三观来看,那个程
序的代码质量和风格也是个大大的反例。至于我为什么揪出了这个程序,大家看看便知,你也会知道我为什么想要给这个网站投稿。
poi。
VS工程里的文件都是啥?如何打包? 2015-03-04的更多相关文章
- C盘里的桌面文件移到E盘里了,然后E盘里的文件都显示到桌面上了,怎么将桌面文件还原回C盘
1 . 直接按Windows键+R,打开"运行"对话框,在输入框中输入"regedit"命令,会打开注册表编辑窗口: 2.打开注册表文件将HKEY_CURREN ...
- android 工程里缺少 R.java 文件原因和解决方法
作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...
- eclipse的工程里的*.properties文件默认以unicode的编码形式显示
今天发现导入eclipse的工程里的*.properties文件无法显示中文,是unicode的编码形式显示的. 原因是Eclipse的.properties文件的默认编码为iso-8859-1. 选 ...
- VC工程里,如何编译汇编语言的文件
最近老是有朋友问,VC工程里,如何编译汇编语言的文件,接下来就说一下步骤: 1.将汇编语言文件,加入到工程里: 2.在Solution Explorer窗口中右键单击Visual C++项目,选择Bu ...
- 清理iOS工程里无用的图片,可瘦身ipa
工程在经过多人后,往往会出现较多的垃圾,导致打包出来的ipa文件偏大,有时候我们会通过清理代码来给程序瘦身,而瘦身ipa效果明显的,主要通过清理程序里的无用图片. 推荐一个清理图片的应用 https: ...
- 在 C++Builder 工程里调用 DLL 函数
调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...
- AltiumDesigner学习笔记(一)——创建工程与原理图文件
一.创建工程与原理图文件 1.通过菜单创建PCB工程 (1)File - New - Project - PCB Project,即可在当前工作区创建新的PCB工程 (2)新建工程并不直接在硬盘中创建 ...
- 论XCODE工程里使用的宏定义.
在XCODE开发过程中,经常会遇到引用头文件,引用库路径的问题,如果不是直接的源码引入,则需要在工程中增加设置.虽然现在有了Pod这类集合管理工具,但有时为了一个很小的lib引入Pod这尊大神还是有点 ...
- 在 C++Builder 工程里使用 Visual C++ DLL(3个工具) good
译者序: 第一次读这篇文章是在 2001 年 10 月,帮我解决了一点小问题.本来不好意思翻译,因为英语水平实在太差.最近发现不少网友在问在 C++Builder 的工程里调用 Visual C++ ...
随机推荐
- 使用nginx部署Yii 2.0\yii-advanced-app-2.0.6
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- beagleBone black 中QT的移植
收到板子后默认是Debian系统.gcc -v 后发现其编译链是:arm-linux-gnueabihf http://pan.baidu.com/s/1pJrAvsn 有相关工具下载,里面有这个 解 ...
- delphi.指针.PChar
此文是delphi.指针.应用姊妹篇,想细化一下PChar应用,所以有了此文. 注意: 1:此文讲的是PChar与字符串相关操作,其它方法暂不多讲. 2:由于D分开Ansi/Unicode的两种完全不 ...
- Lucene.net 多条件查询搜索
最近一直在研究lucene,目的是想让网站实现像搜索引擎那样的搜索,可以快速.准确的帮用户查询出想要的结果.废话不多说,上代码实例: 1.利用BooleanQuery进行多条件搜索(比较灵活) L ...
- DispatcherServlet作用
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好 ...
- mapreduce核心原理
1:第一阶段: 第一阶段的task每一个nodemanager并发运行程序,完全并发,各不影响.这就是map阶段 运行的task时maptask 2:第二个阶段的task并发实例互不相干,但是他们的数 ...
- PHP数据类型
在PHP中,一共支持8种数据类型:整型,浮点型,布尔型,字符串型,数组,对象,空类型(NULL),资源型 标量类型 int(integet)整数类型 整型数据:在内存中占4个字节,也就是32个bit位 ...
- 移动web app 中的meta 标签
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scal ...
- MS - 2 - 设计包含 min 函数的栈
定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素. 要求函数 min.push 以及 pop 的时间复杂度都是 O(1). template<typename T> st ...
- <读书笔记>软件调试之道 :从大局看调试-零容忍策略
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...