您的位置:首页 > 运维架构

VC文件格式描述

2009-05-06 11:22 225 查看

vcproj文件格式

 

上回说到了sln文件格式,每个sln都包含了一个到多个工程文件,c++工程文件的文件扩展名为vcproj,这回说一下vcproj的格式。
vcproj是一个标准的xml文件。因此以下就以节点顺序描述。
根节点是VisualStudioProject,属性中包含了工程的全局信息,常见的信息有:
属性
含义
说明
ProjectType

工程类型

默认值是Visual C++

Version

版本

默认值是7.10

Name

工程名称

 

ProjectGUID

工程的GUID

 

Keyword

工程关键字

默认值是Win32Proj

SccProjectName

SccAuxPath

SccLocalPath

SccProvider

SourceSafe信息

默认值是SAK

后面的Scc**属性,标志了此工程在SourceSafe中。手动将一个工程从SourceSafe中删除时,只要删除这四个属性就行。当它们的默认值是SAK时,可以在工程文件的同一个目录下找到一个文件mssccprj.scc,这里面包含了工程在SourceSafe中的信息,比如:
SCC = This is a Source Code Control file
[PS.vcproj]
SCC_Aux_Path = "//code-server/code$/"
SCC_Project_Name = "$/project/PS", IQIBAAAA
 
根节点下有三个子节点比较重要。Platforms很简单,表示平台内容,通常就是“Win32”;Configurations是编译和链接的配置信息;Files下包括的是工程中的文件信息。以下主要谈谈Configurations和Files。
 
Configurations包含了工程编译和链接等配置信息,其子节点是Configuration,由用户设定的编译类型决定,默认有Debug和Release两个子节点。Configuration的属性如下:
属性
含义
说明
Name

编译选项名称

Debug下通常为Debug|Win32

OutputDirectory

目标文件输出路径

默认为Debug

IntermediateDirectory

编译信息输出路径

默认为Debug

ConfigurationType

工程类型

1表示exe程序文件,2表示dll动态库文件,3表示lib静态库文件

UseOfMFC

表示是否使用MFC

0表示不使用MFC,1表示静态链接MFC,2表示动态链接MFC

CharacterSet

表示编码类型

1表示Unicode,2表示Ansi

 
Configuration的子节点全是Tool,每个子节点都有一个属性Name表示节点含义。这里面有两个子节点比较有用,一个是VCCLCompilerTool,表示编译信息,一个是VCLinkerTool,表示链接信息,其它的子节点用的不多。
VCCLCompilerTool的常用属性如下:
属性
含义
说明
Optimization

优化选项

可以为0、1、2、3、4

PreprocessorDefinitions

预定义标记

通常都是WIN32 _WINDOWS _DEBUG

MinimalRebuild

是否使用最小编译

设置为TRUE能节约编译时间

BasicRuntimeChecks

运行时检测,包括栈和未初始化变量等

默认为3

RuntimeLibrary

程序运行时

选择多(单)线程,(非)调试,DLL(EXE)类型

TreatWChar_tAsBuiltInType

是否将wchar_t当作内置类型

如果为FALSE,wchar_t被认为是unsigned short类型

ForceConformanceInForLoopScope

if和for循环中声明的变量的作用范围是否在循环内

7.1默认为FALSE,8.0默认为TRUE

UsePrecompiledHeader

预定义头文件设置

0表示不使用,1表示创建预定义头文件,2表示自动创建,3表示使用预定义头文件

PrecompiledHeaderThrough

预定义头文件名

通常都是stdafx.h,可以随意指定

PrecompiledHeaderFile

预编译信息文件名

默认为$(IntDir)/$(TargetName).pch

WarningLevel

警告级别

4

Detect64BitPortabilityProblems

检测是否兼容64位程序

FALSE

DebugInformationFormat

调试信息格式

Debug下通常设置为4,Release下可以设置为3

 
VCLinkerTool的常用属性如下:
属性
含义
说明
AdditionalDependencies

依赖lib文件

 

OutputFile

输出的目标文件

默认$(OutDir)/$(ProjectName).exe

LinkIncremental

增量编译

2

AdditionalLibraryDirectories

依赖lib的位置

 

GenerateDebugInformation

是否生成调试信息

通常都为TRUE

ProgramDatabaseFile

调试信息文件名称

$(IntDir)/$(ProjectName).pdb

SubSystem

子系统

1为控制台,2为Windows程序

ImportLibrary

导入的lib文件

默认$(IntDir)/$(ProjectName).lib

 
 
Files下包括的是工程中的文件信息,由Filter和File组成,Filter表示目录,File表示文件。每个cpp还可以包含一个子节点FileConfiguration,这个子节点表示此cpp文件编译时与全局编译选项不一致的内容,通常情况下除了预编译头文件外这不是必须的,预编译头则必须指定它的UsePrecompiledHeader信息为1,也就是由它来创建预定义头文件。
 
补充:
dsp 工程文件,文本格式,不可丢失或损坏  
   
  .dsw 工作区文件,丢失或损坏时,可点击.dsp文件打开工程,.dsw文件自动重建  
   
  .clw ClassWizard信息文件,ini格式,ClassWizard出问题时可删除它再重建  
   
  .map 映像信息文件,编制DLL写.def文件时,若不知道函数导出顺序,可在  
     Prject   /   Settings   /   Link   页中选中“Generate   mapfile”,重新build,  
     用记事本或其它类似程序打开生成的.map文件,里面可看到函数导出表  
   
  .i    在命令行环境下输入:cl   ***.cpp   /P   (注意后面的参数P大小写敏感),  
     程序文件夹中会生成.i文件,用记事本或其它类似程序打开,可看到.cpp  
     文件经预处理后的结果  
   
  .ncb 无编译浏览文件,当自动完成功能(自动显示成员变量列表)出问题时,  
     可删除它,build   后自动重建。   

  其它:  
  .aps 资源辅助文件,二进制格式  
  .opt 开发环境参数(如工具条位置)文件  
  .plg 编译信息(如error和warning信息)文件,html格式  
   
  .pch 预编译文件,可加快编译速度,但改文件非常大  
  .pdb 记录程序相关的数据和调试信息  
  .exp dll信息文件,编译dll时才会生成  
  .bsc 用于浏览项目信息,可在  
     Prject   /   Settings   /   Link   页中勾掉“Generate   Browse   Info   File”,  
     禁止生成.bsc文件,以加快编译速度。但若使用Source   Browser的话  
     就必须有这个文件     
  其它:  
  .aps 资源辅助文件,二进制格式  
  .opt 开发环境参数(如工具条位置)文件  
  .plg 编译信息(如error和warning信息)文件,html格式  
   
  .pch 预编译文件,可加快编译速度,但改文件非常大  
  .pdb 记录程序相关的数据和调试信息  
  .exp dll信息文件,编译dll时才会生成  
  .bsc 用于浏览项目信息,可在  
     Prject   /   Settings   /   Link   页中勾掉“Generate   Browse   Info   File”,  
     禁止生成.bsc文件,以加快编译速度。但若使用Source   Browser的话  
     就必须有这个文件  
Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置它们总称为解决方案文件
为解决方案资源管理器提供显示管理文件的图形接口所需的信息
从而在每次继续开发任务时,不会因开发环境而分散精力;

*.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
比如是生成Debug模式,还是Release模式,是通用CPU还是专用的等

*.suo: (solution user opertion) 解决方案用户选项记录所有将与解决方案建立关联的选项,
以便在每次打开时,它都包含您所做的自定义设置。
比如VS布局,项目最后编译的而又没有关掉的文件(下次打开时用)
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息