vcproj文件是vs08或vs05的工程文件,而sln文件为vs08或vs05的的项目文件。
vcproj的具体格式为xml格式,其中包含三个主要的节:platform,configuration,Files
platform:描述的只是x64,x86等不同的平台。
configuration:描述的是编译和链接器的环境配置信息。可以通过vs08或者vs05的项目属性进行设置,也可以手动的进行设置。
Files:描述的是编译时需要的各种cpp,h文件,其中也会分节点,Filter描述的是目录,Files描述的是具体的文件。
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 |