.vcxproj 与 .vcxproj.filters 详解

.vcxproj 与 .vcxproj.filters 详解

vs 项目应该包含 .vcxproj 与 .vcxproj.filters

.vcxproj

简介

  1. Visual Studio 2010 开始 从 .vcproj 更新到了 .vcxproj
  2. 包含构建项目所需的配置和属性设置,如源文件、头文件的列表,编译和链接选项等。该文件基于 XML 格式。
  3. 采用 MSBuild(Microsoft Build Engine)的格式进行管理和构建。MSBuild 是微软的一种构建平台,支持跨平台编译、并行构建和复杂依赖管理

文件解构示例

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>

  <PropertyGroup Label="Globals">
    <ProjectGuid>{A1B2C3D4-E5F6-7890-1234-56789ABCDEF0}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>MyProject</RootNamespace>
  </PropertyGroup>

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

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>

  <ItemGroup>
    <ClCompile Include="main.cpp" />
    <ClCompile Include="utils.cpp" />
  </ItemGroup>

  <ItemGroup>
    <ClInclude Include="main.h" />
    <ClInclude Include="utils.h" />
  </ItemGroup>

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

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <Link>
      <GenerateDebugInformation>true</GenerateDebugInformation>
    </Link>
  </ItemDefinitionGroup>

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>MaxSpeed</Optimization>
      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <Link>
      <GenerateDebugInformation>false</GenerateDebugInformation>
    </Link>
  </ItemDefinitionGroup>

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

结构说明

  • <Project> 标签:根元素,包含整个项目文件。DefaultTargets 属性定义了默认的目标任务,如编译、清理等。

    • <ItemGroup Label="ProjectConfigurations"> 标签: 定义项目的不同配置,通常包括调试配置(Debug)和发布配置(Release),以及目标平台(如 x86 或 x64)。
  • <PropertyGroup Label="Globals"> 全局设置,如项目的 GUID(全局唯一标识符)、项目名称和默认的命名空间。

  • <PropertyGroup Condition> 标签:为不同配置(如 Debug|x64 和 Release|x64)定义编译器和链接器的不同选项:

  • ConfigurationType 指定项目类型,如 Application(生成 .exe 文件),也可以是 StaticLibrary 或 DynamicLibrary。
    UseDebugLibraries:指定是否链接调试库,通常调试配置为 true,发布配置为 false。
    PlatformToolset:指定工具链版本,如 v142 表示 Visual Studio 2019 的工具集。

  • <ItemGroup> 标签:定义了项目包含的源文件(.cpp 文件)、头文件(.h 文件)等。

  • <ItemDefinitionGroup> 标签:定义项目的编译器和链接器选项,通常会根据不同的配置有不同的设置。

ClCompile:指定 C++ 编译器选项,如 WarningLevel(警告等级)、Optimization(优化选项)和 PreprocessorDefinitions(预处理器宏定义)。
Link:指定链接器选项,如是否生成调试信息等。

  • <Import> 标签:引入了 Visual Studio 的默认构建配置和任务定义(如 Microsoft.Cpp.props 和 Microsoft.Cpp.targets),这些文件中包含了 Visual C++ 项目的标准构建过程。

.vcxproj.filters

简介

  1. .vcxproj.filters 文件与 .vcxproj 文件配合使用,定义了项目中文件的显示方式。它将文件分组,比如按源文件、头文件、资源文件等分类,便于在 Visual Studio 中的“解决方案资源管理器”中查看和组织文件结构。
c++

visaul stiudio

2024-10-11 15:06:04

c++

qtCreator快捷键

2024-10-17 10:11:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索