打完补充:以下内容全部是我一家之言,只是愿意分享,内容如有不妥还请见谅。

======================================================

刚才接收了一份代码,庞大的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的更多相关文章

  1. C盘里的桌面文件移到E盘里了,然后E盘里的文件都显示到桌面上了,怎么将桌面文件还原回C盘

    1 . 直接按Windows键+R,打开"运行"对话框,在输入框中输入"regedit"命令,会打开注册表编辑窗口: 2.打开注册表文件将HKEY_CURREN ...

  2. android 工程里缺少 R.java 文件原因和解决方法

    作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...

  3. eclipse的工程里的*.properties文件默认以unicode的编码形式显示

    今天发现导入eclipse的工程里的*.properties文件无法显示中文,是unicode的编码形式显示的. 原因是Eclipse的.properties文件的默认编码为iso-8859-1. 选 ...

  4. VC工程里,如何编译汇编语言的文件

    最近老是有朋友问,VC工程里,如何编译汇编语言的文件,接下来就说一下步骤: 1.将汇编语言文件,加入到工程里: 2.在Solution Explorer窗口中右键单击Visual C++项目,选择Bu ...

  5. 清理iOS工程里无用的图片,可瘦身ipa

    工程在经过多人后,往往会出现较多的垃圾,导致打包出来的ipa文件偏大,有时候我们会通过清理代码来给程序瘦身,而瘦身ipa效果明显的,主要通过清理程序里的无用图片. 推荐一个清理图片的应用 https: ...

  6. 在 C++Builder 工程里调用 DLL 函数

    调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...

  7. AltiumDesigner学习笔记(一)——创建工程与原理图文件

    一.创建工程与原理图文件 1.通过菜单创建PCB工程 (1)File - New - Project - PCB Project,即可在当前工作区创建新的PCB工程 (2)新建工程并不直接在硬盘中创建 ...

  8. 论XCODE工程里使用的宏定义.

    在XCODE开发过程中,经常会遇到引用头文件,引用库路径的问题,如果不是直接的源码引入,则需要在工程中增加设置.虽然现在有了Pod这类集合管理工具,但有时为了一个很小的lib引入Pod这尊大神还是有点 ...

  9. 在 C++Builder 工程里使用 Visual C++ DLL(3个工具) good

    译者序: 第一次读这篇文章是在 2001 年 10 月,帮我解决了一点小问题.本来不好意思翻译,因为英语水平实在太差.最近发现不少网友在问在 C++Builder 的工程里调用 Visual C++  ...

随机推荐

  1. 使用Lamda生成函数

    #include <functional> int main() { std::function<]; ; i < ;i++ ) fn[i] = [=]() {return i ...

  2. urlparse

    urlparse模块 urlparse主要是URL的分解和拼接,分析出URL中的各项参数,可以被其他的URL使用,而且只在python2.7中存在,python3中是在urllib包下的urllib. ...

  3. js 实现动态的图片时钟

    效果如下图 附件有图片   http://files.cnblogs.com/files/biyongyao/时钟.rar 源代码 <!DOCTYPE html> <html> ...

  4. clientTop、offsetTop和scrollTop的区分

    页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offse ...

  5. js 页面刷新方法

    1.reload方法,该方法强迫浏览器刷新当前页面语法:location.reload([bForceGet])参数:bForceGet,可选参数,默认为false从客户端缓存里取当前页.true,则 ...

  6. linux下RDP客户端及服务器

    tsclient redsktop remmina   -->对ubuntu支持的非常不错 XRdp 集合vnc作为rdp服务器端使用;

  7. android嵌套unity3d

    最近因为跟小伙伴在制作一个App参加比赛,由于有unity的开发经验,突发奇想的想要在Android应用中内嵌unity提供模型展示的功能. 为此,我们查阅了不少资料.大多发现的是unity中内嵌An ...

  8. The source attachment does not contain the source for the file  ActionSupport.class 错误

    报错  Syntax error, insert ";" to complete FieldDeclaration 报错   The source attachment does ...

  9. linux系统的常用命令

    linux系统中常用的命令如下(以后经常补充): cd ..   返回上一级 cd use  进入use目录

  10. Objective - C - 添加类目 - NSDate

    1.类目为系统内部的类或者是没有源代码的类添加方法,不有添加实例变量 2.添加的方法会成为原类的一部分,子类照样可以使用 3.类目的文件名为原类名+文件名 4.既可以添加实例方法,也可以添加类方法 X ...