<?xml version="1.0" encoding="utf-8"?>
<!--Copyright, Microsoft Corporation, All rights reserved.-->
<Rule Name="CL" PageTemplate="tool" DisplayName="C/C++" SwitchPrefix="/" Order="10" xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Rule.Categories>
    <Category Name="General" DisplayName="常规"/>
    <Category Name="Optimization" DisplayName="优化"/>
    <Category Name="Preprocessor" DisplayName="预处理器"/>
    <Category Name="Code Generation" DisplayName="代码生成"/>
    <Category Name="Language" DisplayName="语言"/>
    <Category Name="Precompiled Headers" DisplayName="预编译头"/>
    <Category Name="Output Files" DisplayName="输出文件"/>
    <Category Name="Browse Information" DisplayName="浏览信息"/>
    <Category Name="External Includes" DisplayName="外部包含"/>
    <Category Name="Advanced" DisplayName="高级"/>
    <Category Name="All Options" DisplayName="所有选项" Subtype="Search"/>
    <Category Name="Command Line" DisplayName="命令行" Subtype="CommandLine"/>
  </Rule.Categories>
  <Rule.DataSource>
    <DataSource Persistence="ProjectFile" ItemType="ClCompile" Label="" HasConfigurationCondition="true"/>
  </Rule.DataSource>
  <StringListProperty Subtype="folder" Name="AdditionalIncludeDirectories" DisplayName="附加包含目录" Description="指定一个或多个要添加到 include 路径中的目录；如果指定多个，请用 &quot;;&quot; 分隔。(/I[path])" Category="General" Switch="I" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalIncludeDirectories">
  </StringListProperty>
  <BoolProperty Name="ScanSourceForModuleDependencies" DisplayName="扫描源以查找模块依赖关系" Description="让生成扫描所有 c++ 源(而不仅仅是模块接口和标头单元源)，以查找模块和标头单元依赖关系并生成完整依赖关系图。" Category="General" IncludeInCommandLine="false" F1Keyword="VC.Project.VCCLCompilerTool.ScanSourceForModuleDependencies">
  </BoolProperty>
  <EnumProperty Name="DebugInformationFormat" DisplayName="调试信息格式" Description="指定编译器生成的调试信息类型。这要求使用兼容的链接器设置。  (/Z7, /Zi, /ZI)" Category="General" F1Keyword="VC.Project.VCCLCompilerTool.DebugInformationFormat">
    <EnumValue Name="None" Switch="" DisplayName="无" Description="没有生成调试信息，因此编译可能会更快。">
    </EnumValue>
    <EnumValue Name="OldStyle" Switch="Z7" DisplayName="C7 兼容" Description="选择为程序创建的调试信息的类型，并选择是将此信息保存在对象(.obj)文件中，还是保存在程序数据库(PDB)中。">
    </EnumValue>
    <EnumValue Name="ProgramDatabase" Switch="Zi" DisplayName="程序数据库" Description="生成一个程序数据库(PDB)，其中包含供调试器使用的类型信息和符号化调试信息。符号化调试信息包含变量的名称和类型以及函数和行号。">
    </EnumValue>
    <EnumValue Name="EditAndContinue" Switch="ZI" DisplayName="用于“编辑并继续”的程序数据库" Description="采用支持“编辑并继续”功能的格式生成程序数据库(如上所述)。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty Name="SupportJustMyCode" DisplayName="支持仅我的代码调试" Description="在此编译单元中添加用于启用仅我的代码调试的支持代码。(/JMC)" Category="General" Switch="JMC" F1Keyword="VC.Project.VCCLCompilerTool.SupportJustMyCode">
  </BoolProperty>
  <BoolProperty Name="SuppressStartupBanner" DisplayName="取消显示启动版权标志" Description="当编译器启动时取消显示登录版权标志，并在编译期间取消显示信息性消息。" Category="General" Switch="nologo" F1Keyword="VC.Project.VCCLCompilerTool.SuppressStartupBanner">
  </BoolProperty>
  <EnumProperty Name="WarningLevel" DisplayName="警告等级" Description="选择编译器对代码错误的严格程度。     (/W0 - /W4)" Category="General" F1Keyword="VC.Project.VCCLCompilerTool.WarningLevel">
    <EnumValue Name="TurnOffAllWarnings" Switch="W0" DisplayName="关闭所有警告" Description="等级 0 禁用所有警告。">
    </EnumValue>
    <EnumValue Name="Level1" Switch="W1" DisplayName="等级 1" Description="等级 1 显示严重警告。等级 1 是命令行的默认警告等级。">
    </EnumValue>
    <EnumValue Name="Level2" Switch="W2" DisplayName="等级 2" Description="等级 2 显示所有等级 1 警告和没有等级 1 严重的警告。">
    </EnumValue>
    <EnumValue Name="Level3" Switch="W3" DisplayName="等级 3" Description="等级 3 显示所有等级 2 警告以及出于生产目的而建议的所有其他警告。">
    </EnumValue>
    <EnumValue Name="Level4" Switch="W4" DisplayName="等级 4" Description="等级 4 显示所有等级 3 警告以及在多数情况下可放心忽略的信息性警告。">
    </EnumValue>
    <EnumValue Name="EnableAllWarnings" Switch="Wall" DisplayName="启用所有警告" Description="启用所有警告，包括默认情况下禁用的那些警告。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty ReverseSwitch="WX-" Name="TreatWarningAsError" DisplayName="将警告视为错误" Description="将所有编译器警告都视为错误。对于新项目，最好在所有编译中使用 /WX；对所有警告进行解析可确保将可能难以发现的代码缺陷减至最少。" Category="General" Switch="WX" F1Keyword="VC.Project.VCCLCompilerTool.WarnAsError">
  </BoolProperty>
  <StringProperty Name="WarningVersion" DisplayName="警告版本" Description="隐藏在特定编译器版本后引入的警告功能。     (/Wv:xx[.yy[.zzzzz]])" Category="General" Switch="Wv:" F1Keyword="VC.Project.VCCLCompilerTool.WarningVersion">
  </StringProperty>
  <EnumProperty Name="DiagnosticsFormat" DisplayName="诊断格式" Description="启用丰富的诊断工具，在诊断消息中包含列信息和源上下文。" Category="General" F1Keyword="VC.Project.VCCLCompilerTool.DiagnosticsFormat">
    <EnumValue Name="Caret" Switch="diagnostics:caret" DisplayName="脱字号" Description="在诊断消息中提供列信息，同时输出源代码的相关行以及指示引起冲突的列的脱字号。">
    </EnumValue>
    <EnumValue Name="Column" Switch="diagnostics:column" DisplayName="列信息" Description="此外还提供发出诊断的行中的列号(如果适用)。">
    </EnumValue>
    <EnumValue Name="Classic" Switch="diagnostics:classic" DisplayName="传统型" Description="保留之前简明的诊断消息以及行号。">
    </EnumValue>
  </EnumProperty>
  <StringProperty Subtype="folder" Name="TrackerLogDirectory" DisplayName="跟踪器日志目录" Description="跟踪器日志目录。" Category="General" IncludeInCommandLine="false" Visible="false">
  </StringProperty>
  <BoolProperty Name="MultiProcessorCompilation" DisplayName="多处理器编译" Description="多处理器编译。" Category="General" Switch="MP" F1Keyword="VC.Project.VCCLCompilerTool.MultiProcessorCompilation">
    <Argument Property="ProcessorNumber" IsRequired="false"/>
  </BoolProperty>
  <BoolProperty Name="EnableASAN" DisplayName="启用地址擦除系统" Description="使用 AddressSanitizer 编译和链接程序。目前仅可用于 x86 和 x64 版本。" Category="General" Switch="fsanitize=address" F1Keyword="VC.Project.VCCLCompilerTool.EnableASAN">
    <BoolProperty.DataSource>
      <DataSource Persistence="ProjectFile" ItemType="" Label="Configuration" HasConfigurationCondition="true"/>
    </BoolProperty.DataSource>
  </BoolProperty>
  <EnumProperty Name="Optimization" DisplayName="优化" Description="选择代码优化选项；选择“自定义”可使用特定的优化选项。     (/Od, /O1, /O2)" Category="Optimization" F1Keyword="VC.Project.VCCLCompilerTool.Optimization">
    <EnumValue Name="Custom" Switch="" DisplayName="自定义" Description="自定义优化。">
    </EnumValue>
    <EnumValue Name="Disabled" Switch="Od" DisplayName="已禁用" Description="禁用优化。">
    </EnumValue>
    <EnumValue Name="MinSpace" Switch="O1" DisplayName="最大优化(优选大小)" Description="等效于 /Og /Os /Oy /Ob2 /Gs /GF /Gy">
    </EnumValue>
    <EnumValue Name="MaxSpeed" Switch="O2" DisplayName="最大优化(优选速度)" Description="等效于 /Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy">
    </EnumValue>
    <EnumValue Name="Full" Switch="Ox" DisplayName="优化(优选速度)" Description="等效于 /Og /Oi /Ot /Oy /Ob2">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="InlineFunctionExpansion" DisplayName="内联函数扩展" Description="选择生成的内联函数扩展级别。     (/Ob1, /Ob2)" Category="Optimization" F1Keyword="VC.Project.VCCLCompilerTool.InlineFunctionExpansion">
    <EnumValue Name="Default" Switch="" DisplayName="默认值">
    </EnumValue>
    <EnumValue Name="Disabled" Switch="Ob0" DisplayName="已禁用" Description="禁用内联扩展，默认状态为启用。">
    </EnumValue>
    <EnumValue Name="OnlyExplicitInline" Switch="Ob1" DisplayName="只适用于 __inline" Description="只扩展标记为 inline、__inline、__forceinline 或 __inline 的函数，或类声明中定义的 C++ 成员函数中的函数。">
    </EnumValue>
    <EnumValue Name="AnySuitable" Switch="Ob2" DisplayName="任何适用项" Description="扩展标记为 inline 或 __inline 的函数以及编译器选择的任何其他函数(是否扩展依赖于编译器的判断力，这通常称为“auto-inlining”)。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty Name="IntrinsicFunctions" DisplayName="启用内部函数" Description="启用内部函数。 使用内部函数生成代码更快，但代码可能更大。     (/Oi)" Category="Optimization" Switch="Oi" F1Keyword="VC.Project.VCCLCompilerTool.EnableIntrinsicFunctions">
  </BoolProperty>
  <EnumProperty Name="FavorSizeOrSpeed" DisplayName="优选大小或速度" Description="是优选代码大小还是优选代码速度；必须启用“全局优化”。     (/Ot, /Os)" Category="Optimization" F1Keyword="VC.Project.VCCLCompilerTool.FavorSizeOrSpeed">
    <EnumValue Name="Size" Switch="Os" DisplayName="代码大小优先" Description="代码大小优先。通过指示编译器代码大小优先于代码速度，从而使 EXE 和 DLL 的大小最小化。">
    </EnumValue>
    <EnumValue Name="Speed" Switch="Ot" DisplayName="代码速度优先" Description="代码速度优先。通过指示编译器代码速度优先于代码大小，从而使 EXE 和 DLL 的速度最大化。(这是默认设置。) ">
    </EnumValue>
    <EnumValue Name="Neither" Switch="" DisplayName="均不" Description="无大小优化或速度优化。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty ReverseSwitch="Oy-" Name="OmitFramePointers" DisplayName="省略帧指针" Description="禁止在调用堆栈上创建帧指针。" Category="Optimization" Switch="Oy" F1Keyword="VC.Project.VCCLCompilerTool.OmitFramePointers">
  </BoolProperty>
  <BoolProperty Name="EnableFiberSafeOptimizations" DisplayName="启用纤程安全优化" Description="使用纤程和线程本地存储区访问时启用内存空间优化。     (/GT)" Category="Optimization" Switch="GT" F1Keyword="VC.Project.VCCLCompilerTool.EnableFiberSafeOptimizations">
  </BoolProperty>
  <StringListProperty Name="PreprocessorDefinitions" DisplayName="预处理器定义" Description="定义源文件的预处理符号。" Category="Preprocessor" Switch="D " F1Keyword="VC.Project.VCCLCompilerTool.PreprocessorDefinitions">
  </StringListProperty>
  <StringListProperty Name="UndefinePreprocessorDefinitions" DisplayName="取消预处理器定义" Description="指定取消一个或多个预处理器定义。     (/U[宏])" Category="Preprocessor" Switch="U" F1Keyword="VC.Project.VCCLCompilerTool.UndefinePreprocessorDefinitions">
  </StringListProperty>
  <BoolProperty Name="UndefineAllPreprocessorDefinitions" DisplayName="取消所有预处理器定义" Description="取消以前定义的所有预处理器值。     (/u)" Category="Preprocessor" Switch="u" F1Keyword="VC.Project.VCCLCompilerTool.UndefineAllPreprocessorDefinitions">
  </BoolProperty>
  <BoolProperty Name="PreprocessToFile" DisplayName="预处理到文件" Description="预处理 C 和 C++ 源文件并将预处理的输出写入到文件。此选项将取消编译，因此不会生成 .obj 文件。" Category="Preprocessor" Switch="P" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFile">
  </BoolProperty>
  <StringProperty Name="PreprocessOutputPath" DisplayName="预处理输出路径" Description="指定预处理器的输出路径。默认位置与源文件相同。" Category="Preprocessor" Switch="Fi" Visible="false">
  </StringProperty>
  <BoolProperty Name="PreprocessSuppressLineNumbers" DisplayName="预处理取消显示行号" Description="预处理时不使用 #line 指令。" Category="Preprocessor" Switch="EP" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFileNoLines">
  </BoolProperty>
  <BoolProperty Name="PreprocessKeepComments" DisplayName="保留注释" Description="从源代码取消注释条；要求设置“预处理”选项之一。     (/C)" Category="Preprocessor" Switch="C" F1Keyword="VC.Project.VCCLCompilerTool.KeepComments">
  </BoolProperty>
  <BoolProperty ReverseSwitch="GF-" Name="StringPooling" DisplayName="启用字符串池" Description="允许编译器在执行过程中，在程序映像和内存中创建相同字符串的单个只读副本，从而生成较小的程序(一种称为字符串池的优化)。/O1、/O2 和 /ZI 自动设置 /GF 选项。" Category="Code Generation" Switch="GF" F1Keyword="VC.Project.VCCLCompilerTool.StringPooling">
  </BoolProperty>
  <EnumProperty Name="ExceptionHandling" DisplayName="启用 C++ 异常" Description="指定将由编译器使用的异常处理模型。" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.ExceptionHandling">
    <EnumValue Name="Async" Switch="EHa" DisplayName="是，但有 SEH 异常" Description="捕获异步(结构化)和同步(C++)异常的异常处理模型。(/EHa)">
    </EnumValue>
    <EnumValue Name="Sync" Switch="EHsc" DisplayName="是" Description="仅捕获 C++ 异常并通知编译器假定 Extern C 函数从不引发 C++ 异常的异常处理模型。(/EHsc)">
    </EnumValue>
    <EnumValue Name="SyncCThrow" Switch="EHs" DisplayName="是，且有 Extern C 函数" Description="仅捕获 C++ 异常并通知编译器假定 Extern C 函数引发异常的异常处理模型。(/EHs)">
    </EnumValue>
    <EnumValue Name="false" Switch="" DisplayName="否" Description="无异常处理。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty Name="SmallerTypeCheck" DisplayName="较小类型检查" Description="启用向较小类型转换时的检查，与除调试以外的任何优化类型不兼容。     (/RTCc)" Category="Code Generation" Switch="RTCc" F1Keyword="VC.Project.VCCLCompilerTool.SmallerTypeCheck">
  </BoolProperty>
  <EnumProperty Name="RuntimeLibrary" DisplayName="运行库" Description="指定运行库以进行链接。     (/MT, /MTd, /MD, /MDd)" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeLibrary">
    <EnumValue Name="MultiThreaded" Switch="MT" DisplayName="多线程" Description="让应用程序使用多线程的静态版本的运行库。">
    </EnumValue>
    <EnumValue Name="MultiThreadedDebug" Switch="MTd" DisplayName="多线程调试" Description="定义 _DEBUG 和 _MT。此选项还会让编译器将库名称 LIBCMTD.lib 放入 .obj 文件中，以便链接器将使用 LIBCMTD.lib 来解析外部符号。">
    </EnumValue>
    <EnumValue Name="MultiThreadedDLL" Switch="MD" DisplayName="多线程 DLL" Description="让应用程序使用特定于多线程和 DLL 的运行库版本。定义 _MT 和 _DLL，并让编译器将库名称 MSVCRT.lib 放入 .obj 文件中。">
    </EnumValue>
    <EnumValue Name="MultiThreadedDebugDLL" Switch="MDd" DisplayName="多线程调试 DLL" Description="定义 _DEBUG、_MT 和 _DLL，并让应用程序使用特定于调试多线程和 DLL 的运行时库版本。它还会让编译器将库名称 MSVCRTD.lib 放入 .obj 文件中。">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="StructMemberAlignment" DisplayName="结构成员对齐" Description="为结构成员对齐指定 1、2、4、8 或 16 字节边界。     (/Zp[num])" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.StructMemberAlignment">
    <EnumValue Name="1Byte" Switch="Zp1" DisplayName="1 字节" Description="针对 1 字节边界将结构打包。与 /Zp 相同。">
    </EnumValue>
    <EnumValue Name="2Bytes" Switch="Zp2" DisplayName="2 字节" Description="针对 2 字节边界将结构打包。">
    </EnumValue>
    <EnumValue Name="4Bytes" Switch="Zp4" DisplayName="4 字节" Description="针对 4 字节边界将结构打包。">
    </EnumValue>
    <EnumValue Name="8Bytes" Switch="Zp8" DisplayName="8 字节" Description="针对 8 字节边界将结构打包(默认设置)。">
    </EnumValue>
    <EnumValue Name="16Bytes" Switch="Zp16" DisplayName="16 字节" Description="针对 16 字节边界将结构打包。">
    </EnumValue>
    <EnumValue Name="Default" Switch="" DisplayName="默认值" Description="默认对齐设置。">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="BufferSecurityCheck" DisplayName="安全检查" Description="安全检查可帮助检测到堆栈缓冲区溢出，这是一种常见的攻击，威胁程序的安全性。(/GS-、/GS)" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.BufferSecurityCheck">
    <EnumValue Name="false" Switch="GS-" DisplayName="禁用安全检查" Description="禁用安全检查。(/GS-)">
    </EnumValue>
    <EnumValue Name="true" Switch="GS" DisplayName="启用安全检查" Description="启用安全检查。(/GS)">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="ControlFlowGuard" DisplayName="控制流防护" Description="防护安全检查可帮助检测到尝试调度到非法代码块的操作。(/guard:cf)" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.ControlFlowGuard">
    <EnumValue Name="Guard" Switch="guard:cf" DisplayName="是" Description="启用带防护的安全检查(/guard:cf)">
    </EnumValue>
    <EnumValue Name="false" Switch="" DisplayName="否">
    </EnumValue>
  </EnumProperty>
  <BoolProperty ReverseSwitch="Gy-" Name="FunctionLevelLinking" DisplayName="启用函数级链接" Description="允许编译器以打包函数(COMDATs)的形式对各个函数进行打包。要使“编辑并继续”正常工作，必须设置此项。     (/Gy)" Category="Code Generation" Switch="Gy" F1Keyword="VC.Project.VCCLCompilerTool.EnableFunctionLevelLinking">
  </BoolProperty>
  <EnumProperty Name="EnableEnhancedInstructionSet" DisplayName="启用增强指令集" Description="允许使用支持增强指令集的处理器上的指令。如果未指定任何选项，则编译器将使用支持 SSE2 的处理器上的指令。可以通过 /arch:IA32 禁用对增强指令的使用。(/arch:SSE、/arch:SSE2、/arch:AVX、/arch:AVX2、/arch:AVX512、/arch:IA32、/arch:ARMv7VE、/arch:VFPv4、/arch:[armv8.0-armv8.8],)" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.EnableEnhancedInstructionSet">
    <EnumValue Name="StreamingSIMDExtensions" Switch="arch:SSE" DisplayName="流式处理 SIMD 扩展 (X86)" Description="流式处理 SIMD 扩展 (X86)。(/arch:SSE)">
    </EnumValue>
    <EnumValue Name="StreamingSIMDExtensions2" Switch="arch:SSE2" DisplayName="流式处理 SIMD 扩展 2 (X86)" Description="流式处理 SIMD 扩展 2 (X86)。(/arch:SSE2)">
    </EnumValue>
    <EnumValue Name="AdvancedVectorExtensions" Switch="arch:AVX" DisplayName="高级矢量扩展 (X86/X64)" Description="高级矢量扩展 (X86/X64)。(/arch:AVX)">
    </EnumValue>
    <EnumValue Name="AdvancedVectorExtensions2" Switch="arch:AVX2" DisplayName="高级矢量扩展 2 (X86/X64)" Description="高级矢量扩展 2 (X86/X64)。(/arch:AVX2)">
    </EnumValue>
    <EnumValue Name="AdvancedVectorExtensions512" Switch="arch:AVX512" DisplayName="高级矢量扩展 512 (X86/X64)" Description="高级矢量扩展 512。(X86/X64) (/arch:AVX512)">
    </EnumValue>
    <EnumValue Name="AdvancedVectorExtensions101" Switch="arch:AVX10.1" DisplayName="高级矢量扩展 AVX10.1 (X86/X64)" Description="高级矢量扩展 10.1。(X86/X64) (/arch:AVX10.1)">
    </EnumValue>
    <EnumValue Name="VirtualizationExtensions" Switch="arch:ARMv7VE" DisplayName="虚拟化扩展(ARM)" Description="虚拟化扩展(ARM)。(/arch:ARMv7VE)">
    </EnumValue>
    <EnumValue Name="ARMVFPv4Instructions" Switch="arch:VFPv4" DisplayName="ARM VFPv4 指令(ARM)" Description="ARM VFPv4 指令(ARM)。(/arch:VFPv4)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv80" Switch="arch:armv8.0" DisplayName="CPU 扩展要求 ARMv8.0-A (ARM64)" Description="CPU 扩展要求 ARMv8.0-A (ARM64)。(/arch:armv8.0)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv81" Switch="arch:armv8.1" DisplayName="CPU 扩展要求 ARMv8.1-A (ARM64)" Description="CPU 扩展要求 ARMv8.1-A (ARM64)。(/arch:armv8.1)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv82" Switch="arch:armv8.2" DisplayName="CPU 扩展要求 ARMv8.2-A (ARM64)" Description="CPU 扩展要求 ARMv8.2-A (ARM64)。(/arch:armv8.2)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv83" Switch="arch:armv8.3" DisplayName="CPU 扩展要求 ARMv8.3-A (ARM64)" Description="CPU 扩展要求 ARMv8.3-A (ARM64)。(/arch:armv8.3)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv84" Switch="arch:armv8.4" DisplayName="CPU 扩展要求 ARMv8.4-A (ARM64)" Description="CPU 扩展要求 ARMv8.4-A (ARM64)。(/arch:armv8.4)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv85" Switch="arch:armv8.5" DisplayName="CPU 扩展要求 ARMv8.5-A (ARM64)" Description="CPU 扩展要求 ARMv8.5-A (ARM64)。(/arch:armv8.5)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv86" Switch="arch:armv8.6" DisplayName="CPU 扩展要求 ARMv8.6-A (ARM64)" Description="CPU 扩展要求 ARMv8.6-A (ARM64)。(/arch:armv8.6)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv87" Switch="arch:armv8.7" DisplayName="CPU 扩展要求 ARMv8.7-A (ARM64)" Description="CPU 扩展要求 ARMv8.7-A (ARM64)。(/arch:armv8.7)">
    </EnumValue>
    <EnumValue Name="CPUExtensionRequirementsARMv88" Switch="arch:armv8.8" DisplayName="CPU 扩展要求 ARMv8.8-A (ARM64)" Description="CPU 扩展要求 ARMv8.8-A (ARM64)。(/arch:armv8.8)">
    </EnumValue>
    <EnumValue Name="NoExtensions" Switch="arch:IA32" DisplayName="无增强指令" Description="无增强指令。(/arch:IA32)">
    </EnumValue>
    <EnumValue Name="NotSet" Switch="" DisplayName="未设置" Description="未设置。">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="FloatingPointModel" DisplayName="浮点模型" Description="设置浮点模型。   (/fp:precise, /fp:strict, /fp:fast)" Category="Code Generation" F1Keyword="VC.Project.VCCLCompilerTool.floatingPointModel">
    <EnumValue Name="Precise" Switch="fp:precise" DisplayName="精度" Description="默认值。改进有关相等和不相等的浮点测试的一致性。">
    </EnumValue>
    <EnumValue Name="Strict" Switch="fp:strict" DisplayName="严格" Description="最严格的浮点模型。/fp:strict 将会禁用 fp_contract 并启用 fenv_access。/fp:except 是默示的，可通过显式指定 /fp:except- 来禁用它。/fp:strict 与 /fp:except- 一起使用时，将强制使用严格浮点语义，但不针对例外事件。">
    </EnumValue>
    <EnumValue Name="Fast" Switch="fp:fast" DisplayName="快速" Description="在大多数情况下，创建运行速度最快的代码。">
    </EnumValue>
    <EnumValue Name="Default" Switch="" DisplayName="默认" Description="默认值。">
    </EnumValue>
  </EnumProperty>
  <BoolProperty ReverseSwitch="fp:except-" Name="FloatingPointExceptions" DisplayName="启用浮点异常" Description="可靠的浮点异常模型。异常将在触发后立即引发。   (/fp:except)" Category="Code Generation" Switch="fp:except" F1Keyword="VC.Project.VCCLCompilerTool.FloatingPointExceptions">
  </BoolProperty>
  <BoolProperty Name="IntelJCCErratum" DisplayName="启用 Intel JCC Erratum 缓解措施" Description=" 可缓解由 Intel JCC 错误微代码更新导致的性能影响的软件。       (/QIntel-jcc-erratum)" Category="Code Generation" Switch="QIntel-jcc-erratum" F1Keyword="VC.Project.VCCLCompilerTool.IntelJCCErratum">
  </BoolProperty>
  <BoolProperty ReverseSwitch="guard:ehcont-" Name="GuardEHContMetadata" DisplayName="启用异常处理延续元数据" Description="生成一个已排序的列表，其中包含二进制文件的所有有效异常处理延续目标，在运行时期间用于 RIP 验证。当前可用于 x64 版本。(/guard:ehcont)" Category="Code Generation" Switch="guard:ehcont" F1Keyword="VC.Project.VCCLCompilerTool.GuardEHContMetadata">
  </BoolProperty>
  <BoolProperty ReverseSwitch="GR-" Name="RuntimeTypeInfo" DisplayName="启用运行时类型信息" Description="添加在运行时检查 C++ 对象类型(运行时类型信息)的代码。     (/GR, /GR-)" Category="Language" Switch="GR" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeTypeInfo">
  </BoolProperty>
  <EnumProperty Name="LanguageStandard" DisplayName="C++ 语言标准" Description="确定编译器将强制执行的 C++ 语言标准。建议尽可能使用最新版本。(/std:c++14、/std:c++17、/std:c++20、/std:c++23preview、/std:c++latest)" Category="Language" F1Keyword="VC.Project.VCCLCompilerTool.CppLanguageStandard">
    <EnumValue Name="Default" Switch="" DisplayName="默认(ISO C++14 标准)">
    </EnumValue>
    <EnumValue Name="stdcpp14" Switch="std:c++14" DisplayName="ISO C++14 标准">
    </EnumValue>
    <EnumValue Name="stdcpp17" Switch="std:c++17" DisplayName="ISO C++17 标准">
    </EnumValue>
    <EnumValue Name="stdcpp20" Switch="std:c++20" DisplayName="ISO C++20 标准">
    </EnumValue>
    <EnumValue Name="stdcpp23" Switch="std:c++23preview" DisplayName="预览 - ISO C++23 标准">
    </EnumValue>
    <EnumValue Name="stdcpplatest" Switch="std:c++latest" DisplayName="预览 - 最新 C++ 工作草案中的功能">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="LanguageStandard_C" DisplayName="C 语言标准" Description="确定编译器将强制执行的 C 语言标准。建议尽可能使用最新版本。(/std:c11、/std:c17、/std:clatest)" Category="Language" F1Keyword="VC.Project.VCCLCompilerTool.CLanguageStandard">
    <EnumValue Name="Default" Switch="" DisplayName="默认(旧版 MSVC)">
    </EnumValue>
    <EnumValue Name="stdc11" Switch="std:c11" DisplayName="ISO C11 标准">
    </EnumValue>
    <EnumValue Name="stdc17" Switch="std:c17" DisplayName="ISO C17 (2018)标准">
    </EnumValue>
    <EnumValue Name="stdclatest" Switch="std:clatest" DisplayName="预览 - 最新 C 工作草案中的功能">
    </EnumValue>
  </EnumProperty>
  <BoolProperty Name="BuildStlModules" DisplayName="生成 ISO C++23 标准库模块" Description="使用 /std:c++latest 时启用 std 和 std.compat 模块的自动生成。" Category="Language" IncludeInCommandLine="false" F1Keyword="VC.Project.VCCLCompilerTool.BuildStlModules">
  </BoolProperty>
  <EnumProperty Name="PrecompiledHeader" DisplayName="预编译头" Description="创建/使用预编译头 : 在生成过程中允许创建或使用预编译头。     (/Yc, /Yu)" Category="Precompiled Headers" F1Keyword="VC.Project.VCCLCompilerTool.UsePrecompiledHeader">
    <EnumValue Name="Create" Switch="Yc" DisplayName="创建" Description="指示编译器创建表示某一时刻的编译状态的预编译头(.pch)文件。">
      <Argument Property="PrecompiledHeaderFile" IsRequired="false"/>
    </EnumValue>
    <EnumValue Name="Use" Switch="Yu" DisplayName="使用" Description="指示编译器在当前编译中使用现有预编译头(.pch)文件。">
      <Argument Property="PrecompiledHeaderFile" IsRequired="false"/>
    </EnumValue>
    <EnumValue Name="NotUsing" Switch="" DisplayName="不使用预编译头" Description="不使用预编译头。">
    </EnumValue>
  </EnumProperty>
  <StringProperty Subtype="file" Name="PrecompiledHeaderFile" DisplayName="预编译头文件" Description="指定创建或使用预编译头文件时使用的头文件名。(/Yc[名称], /Yu[名称])" Category="Precompiled Headers" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderThrough">
  </StringProperty>
  <StringProperty Subtype="file" Name="PrecompiledHeaderOutputFile" DisplayName="预编译头输出文件" Description="指定所生成的预编译头文件的路径和/或名称。(/Fp[名称])" Category="Precompiled Headers" Switch="Fp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderFile">
  </StringProperty>
  <EnumProperty Name="AssemblerOutput" DisplayName="汇编程序输出" Description="指定汇编语言输出文件的内容。     (/FA, /FAc, /FAs, /FAcs)" Category="Output Files" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerOutput">
    <EnumValue Name="NoListing" Switch="" DisplayName="无列表" Description="无列表。">
    </EnumValue>
    <EnumValue Name="AssemblyCode" Switch="FA" DisplayName="仅有程序集的列表" Description="程序集代码；.asm">
    </EnumValue>
    <EnumValue Name="AssemblyAndMachineCode" Switch="FAc" DisplayName="带机器码的程序集" Description="机器码和程序集代码；.cod">
    </EnumValue>
    <EnumValue Name="AssemblyAndSourceCode" Switch="FAs" DisplayName="带源代码的程序集" Description="源代码和程序集代码；.asm">
    </EnumValue>
    <EnumValue Name="All" Switch="FAcs" DisplayName="程序集、机器码和源代码" Description="程序集、机器码和源代码；.cod">
    </EnumValue>
  </EnumProperty>
  <StringProperty Subtype="file" Name="AssemblerListingLocation" DisplayName="ASM 列表位置" Description="指定 ASM 列表文件的相对路径和/或名称；可以是文件名或目录名。     (/Fa[名称])" Category="Output Files" Switch="Fa" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerListingLocation">
  </StringProperty>
  <StringProperty Subtype="file" Name="ObjectFileName" DisplayName="对象文件名" Description="指定重写默认对象文件名的名称；可以是文件名或目录名。     (/Fo[名称])" Category="Output Files" Switch="Fo" F1Keyword="VC.Project.VCCLCompilerTool.ObjectFile">
  </StringProperty>
  <EnumProperty Name="CallingConvention" DisplayName="调用约定" Description="选择应用程序的默认调用约定(可由函数重写)。     (/Gd, /Gr, /Gz, /Gv)" Category="Advanced" F1Keyword="VC.Project.VCCLCompilerTool.CallingConvention">
    <EnumValue Name="Cdecl" Switch="Gd" DisplayName="__cdecl" Description="为除 C++ 成员函数和标记为 __stdcall 或 __fastcall 的函数之外的所有函数指定 __cdecl 调用约定。">
    </EnumValue>
    <EnumValue Name="FastCall" Switch="Gr" DisplayName="__fastcall" Description="为除 C++ 成员函数和标记为 __cdecl 或 __stdcall 的函数之外的所有函数指定 __fastcall 调用约定。所有 __fastcall 函数都必须具有原型。">
    </EnumValue>
    <EnumValue Name="StdCall" Switch="Gz" DisplayName="__stdcall" Description="为除 C++ 成员函数和标记为 __cdecl 或 __fastcall 的函数之外的所有函数指定 __stdcall 调用约定。所有 __stdcall 函数都必须具有原型。">
    </EnumValue>
    <EnumValue Name="VectorCall" Switch="Gv" DisplayName="__vectorcall" Description="指定除 C++ 成员函数和标记有 __cdecl、__fastcall 或 __stdcall 的函数之外的所有函数的 __vectorcall 调用约定。 所有 __vectorcall 函数都必须具有原型。">
    </EnumValue>
  </EnumProperty>
  <EnumProperty Name="CompileAs" DisplayName="编译为" Description="选择 .c 和 .cpp 文件的编译语言选项。     (/TC, /TP, /interface, /internalPartition, /exportHeader)" Category="Advanced" F1Keyword="VC.Project.VCCLCompilerTool.CompileAs">
    <EnumValue Name="Default" Switch="" DisplayName="默认" Description="默认值。">
    </EnumValue>
    <EnumValue Name="CompileAsC" Switch="TC" DisplayName="编译为 C 代码" Description="编译为 C 代码。">
    </EnumValue>
    <EnumValue Name="CompileAsCpp" Switch="TP" DisplayName="编译为 C++ 代码" Description="编译为 C++ 代码。">
    </EnumValue>
    <EnumValue Name="CompileAsCppModule" Switch="interface " DisplayName="作为 C++ 模块代码编译" Description="作为 C++ 模块接口编译。">
    </EnumValue>
    <EnumValue Name="CompileAsCppModuleInternalPartition" Switch="internalPartition " DisplayName="作为 C++ 模块内部分区编译" Description="作为 C++ 模块内部分区编译。">
    </EnumValue>
    <EnumValue Name="CompileAsHeaderUnit" Switch="exportHeader " DisplayName="作为 C++ 标头单元编译" Description="作为 C++ 标头单元编译。">
    </EnumValue>
  </EnumProperty>
  <StringListProperty Subtype="file" Name="ForcedIncludeFiles" DisplayName="强制包含文件" Description="一个或多个强制的包含文件。     (/FI[名称])" Category="Advanced" Switch="FI" F1Keyword="VC.Project.VCCLCompilerTool.ForcedIncludeFiles">
  </StringListProperty>
  <BoolProperty Name="ShowIncludes" DisplayName="显示包含文件" Description="生成包含文件的列表(包括编译器输出)。     (/showIncludes)" Category="Advanced" Switch="showIncludes" F1Keyword="VC.Project.VCCLCompilerTool.ShowIncludes">
  </BoolProperty>
  <BoolProperty Name="OmitDefaultLibName" DisplayName="省略默认的库名称" Description="不将默认的库名称包括在 .obj 文件中。     (/Zl)" Category="Advanced" Switch="Zl" F1Keyword="VC.Project.VCCLCompilerTool.OmitDefaultLibName">
  </BoolProperty>
  <StringProperty Name="AdditionalOptions" DisplayName="附加选项" Description="附加选项。" Category="Command Line" F1Keyword="vc.project.AdditionalOptionsPage">
  </StringProperty>
  <BoolProperty Name="BuildingInIde" Visible="false">
  </BoolProperty>
</Rule>
