.vcxproj 与 .vcxproj.filters 详解
vs 项目应该包含 .vcxproj 与 .vcxproj.filters
.vcxproj
简介
- Visual Studio 2010 开始 从 .vcproj 更新到了 .vcxproj
- 包含构建项目所需的配置和属性设置,如源文件、头文件的列表,编译和链接选项等。该文件基于 XML 格式。
- 采用 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
简介
- .vcxproj.filters 文件与 .vcxproj 文件配合使用,定义了项目中文件的显示方式。它将文件分组,比如按源文件、头文件、资源文件等分类,便于在 Visual Studio 中的“解决方案资源管理器”中查看和组织文件结构。