您的位置:首页 > 其它

VS工程文件解析

2015-11-22 16:17 393 查看
(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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: