VS工程文件解析

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

•VS上的配置,初步归类

–VS工具本身的配置 存储在形如 VC.vssettings文件中
–解决方案配置 存储在.sln中
–项目配置 存储在.vcxproj(包括.filters,.user)中

重点来看下后两种文件的解析


•sln文件解析

版本信息:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010   // 所使用的VS版本号

项目信息

// 包含项目:MyOGREApp.vcxproj

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MyOGREApp", "MyOGREApp\MyOGREApp.vcxproj", "{142FBB5E-8997-4C02-BA21-20F6A030FC49}"
EndProject

// 项目依赖-未涉及 ProjectSection(ProjectDependencies) 

Global配置
// 解决方案配置信息
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
// 项目配置信息
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{142FBB5E-8997-4C02-BA21-20F6A030FC49}.Debug|Win32.ActiveCfg = Debug|Win32
{142FBB5E-8997-4C02-BA21-20F6A030FC49}.Debug|Win32.Build.0 = Debug|Win32
{142FBB5E-8997-4C02-BA21-20F6A030FC49}.Release|Win32.ActiveCfg = Release|Win32
{142FBB5E-8997-4C02-BA21-20F6A030FC49}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
// 解决方案属性
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
// 扩展配置-未涉及 GlobalSection(ExtensibilityGlobals) = postSolution


问题:高版本解决方案.sln,采用较老的版本打不开?

解决方法:可以直接使用notepad打开,修改版本信息


•vcxproj.filter解析

文件夹的定义: 
  <ItemGroup>
    <Filter Include="源文件">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="头文件">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="资源文件">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
    </Filter>
  </ItemGroup>



包含文件文件夹的定义
<ItemGroup>
    <ClCompile Include="MainFrm.cpp">
      <Filter>源文件</Filter>
    </ClCompile>
    <ClCompile Include="MediumVehicle.cpp">
      <Filter>源文件</Filter>
    </ClCompile>
    <ClCompile Include="MyOGREApp.cpp">
      <Filter>源文件</Filter>
    </ClCompile>
 <ItemGroup>

•vcxproj.user解析

用户文件 (.vcxproj.user) 存储特定于用户的属性,例如调试和部署设置。 

.vcxproj.user文件不用放入到配置库中

例如,包含调试配置 LocalDebuggerEnvironment

  <PropertyGroupCondition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LocalDebuggerEnvironment>...</LocalDebuggerEnvironment>
  </PropertyGroup>


•vcxproj解析

初步划分的话,项目相关配置、编译链接配置、包含文件配置:

项目相关配置:

相对内容较多,不详细列出

<ItemGroup Label="ProjectConfigurations">

<PropertyGroup Label="Globals">

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

<PropertyGroup Label="UserMacros" />

<PropertyGroup>


<PropertyGroup>内容:

<PropertyGroup>

    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>

   <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />

</PropertyGroup>


编译链接配置:

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Midl>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>false</MkTypLibCompatible>
      <ValidateAllParameters>true</ValidateAllParameters>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>D:\待测试\OGREtest\OGREtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_AFXDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0804</Culture>
      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalDependencies>mfc90d.lib;OgreMain_d.lib;OIS_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>D:\OgreSDK\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <SubSystem>Windows</SubSystem>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Midl>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MkTypLibCompatible>false</MkTypLibCompatible>
      <ValidateAllParameters>true</ValidateAllParameters>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>false</MinimalRebuild>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <Culture>0x0804</Culture>
      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <SubSystem>Windows</SubSystem>
      <OptimizeReferences>true</OptimizeReferences>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <TargetMachine>MachineX86</TargetMachine>
    </Link>
  </ItemDefinitionGroup>


包含文件配置:

  <ItemGroup>
    <ClInclude Include="MainFrm.h" />
    <ClInclude Include="MediumVehicle.h" />
    <ClInclude Include="MyOGREApp.h" />
    <ClInclude Include="MyOGREAppDoc.h" />
    <ClInclude Include="MyOGREAppView.h" />
    <ClInclude Include="OgreApplication.h" />
    <ClInclude Include="PropView.h" />
    <ClInclude Include="Resource.h" />
    <ClInclude Include="RoadPlane.h" />
    <ClInclude Include="stdafx.h" />
    <ClInclude Include="SubView.h" />
    <ClInclude Include="targetver.h" />
  </ItemGroup>


(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)






评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夜喜雨

稀罕你的喜欢!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值