VCCLCompilerTool Interface

The VCCLCompilerTool object exposes the functionality of the C++ compiler options. See Compiler Options for more information about compiler options.

Namespace:  Microsoft.VisualStudio.VCProjectEngine
Assembly:  Microsoft.VisualStudio.VCProjectEngine (in Microsoft.VisualStudio.VCProjectEngine.dll)

Syntax

'Declaration
<GuidAttribute("F6DEA060-B8B5-48BC-8986-AC2BB5E4788C")> _
Public Interface VCCLCompilerTool
[GuidAttribute("F6DEA060-B8B5-48BC-8986-AC2BB5E4788C")]
public interface VCCLCompilerTool
[GuidAttribute(L"F6DEA060-B8B5-48BC-8986-AC2BB5E4788C")]
public interface class VCCLCompilerTool
[<GuidAttribute("F6DEA060-B8B5-48BC-8986-AC2BB5E4788C")>]
type VCCLCompilerTool =  interface end
public interface VCCLCompilerTool

The VCCLCompilerTool type exposes the following members.

Properties

  Name Description
Public property AdditionalIncludeDirectories Gets or sets one or more directories to add to the include path. AdditionalIncludeDirectories exposes the functionality of the compiler's /I (Additional Include Directories) option, the MIDL compiler's MIDL Property Pages: General option, and the Resource Compiler's Resources Property Pages option.
Public property AdditionalOptions Gets or sets options to add to the end of the command line immediately before the file name(s). An example is if an option is not supported in the object model.
Public property AdditionalUsingDirectories Gets or sets a directory to search to resolve file references passed to the #using Directive (C/C++) directive. AdditionalUsingDirectories exposes the functionality of the compiler's /AI (Specify Metadata Directories) option.
Public property AssemblerListingLocation Gets or sets the relative path and/or name for an ASM listing file. AssemblerListingLocation exposes the functionality of the compiler's /Fa option.
Public property AssemblerOutput Gets or sets the contents of assembly language output file. AssemblerOutput exposes the functionality of the compiler's /FA, /Fa (Listing File) options.
Public property BasicRuntimeChecks Gets or sets a value to indicate whether to perform full run-time error checks /RTC (Run-Time Error Checks)), check stack frame validity at run time (/RTC (Run-Time Error Checks)), and check for uninitialized variables at run time (/RTC (Run-Time Error Checks)).
Public property BrowseInformation Specifies the level of browse information in the .bsc file. BrowseInformation exposes the functionality of the compiler's /FR, /Fr (Create .Sbr File) options.
Public property BrowseInformationFile Gets or sets the optional name for browser information file. BrowseInformationFile exposes the functionality of the compiler's /FR, /Fr (Create .Sbr File) options.
Public property BufferSecurityCheck Gets or sets a value indicating whether to check for buffer overruns. BufferSecurityCheck exposes the functionality of the compiler's /GS (Buffer Security Check) option.
Public property CallingConvention Gets or sets the default calling convention for your application. CallingConvention exposes the functionality of the compiler's /Gd, /Gr, /Gz (Calling Convention) options.
Public property CompileAs Selects compile language option for .c and .cpp files. CompileAs exposes the functionality of the compiler's /Tc, /Tp, /TC, /TP (Specify Source File Type) options.
Public property CompileAsManaged Gets or sets a value indicating compiler options.
Public property CompileOnly Gets or sets a value indicating whether to compile without linking.
Public property DebugInformationFormat Gets or sets the type of debugging information generated by the compiler. DebugInformationFormat exposes the functionality of the compiler's /Z7, /Zi, /ZI (Debug Information Format) options.
Public property DefaultCharIsUnsigned Gets or sets the default char type to unsigned. DefaultCharIsUnsigned exposes the functionality of the compiler's /J (Default char Type Is unsigned) option.
Public property Detect64BitPortabilityProblems Gets or sets a value indicating whether the compiler will check for 64-bit portability issues. Detect64BitPortabilityProblems exposes the functionality of the compiler's /Wp64 (Detect 64-Bit Portability Issues) option.
Public property DisableLanguageExtensions Gets or sets a value indicating whether to suppress language extensions. DisableLanguageExtensions exposes the functionality of the compiler's /Za, /Ze (Disable Language Extensions) option.
Public property DisableSpecificWarnings Gets or sets a value that disables the desired warning numbers; puts numbers in a semicolon delimited list. DisableSpecificWarnings exposes the functionality of the compiler's /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won (Warning Level) option.
Public property EnableEnhancedInstructionSet Gets or sets a value that enables the use of instructions found on processors that support enhanced instruction sets, such as the SSE and SSE2 enhancements to the IA-32. EnableEnhancedInstructionSet exposes the functionality of the compiler's /ARCH option.
Public property EnableFiberSafeOptimizations Gets or sets a value that enables memory space optimization when using fibers and thread local storage access. EnableFiberSafeOptimizations exposes the functionality of the compiler's /GT (Support Fiber-Safe Thread-Local Storage) option.
Public property EnableFunctionLevelLinking Gets or sets a value that enables function-level linking. EnableFunctionLevelLinking exposes the functionality of the compiler's /Gy (Enable Function-Level Linking) option.
Public property EnableIntrinsicFunctions Gets or sets a value indicating whether to use intrinsic functions to generate faster, but possibly larger, code. EnableIntrinsicFunctions exposes the functionality of the compiler's /Oi (Generate Intrinsic Functions) option.
Public property EnablePREfast Gets or sets whether Native Code Analysis is enabled.
Public property ErrorReporting Gets or sets compiler error reporting.
Public property ExceptionHandling Gets or sets a value used for calls to destructors for automatic objects during a stack unwind caused by a thrown exception. ExceptionHandling exposes the functionality of the compiler's /EH (Exception Handling Model) option.
Public property ExecutionBucket Infrastructure. Microsoft Internal Use Only.
Public property ExpandAttributedSource Gets or sets a value indicating whether to create a listing file with expanded attributes injected into source file. ExpandAttributedSource exposes the functionality of the compiler's /Fx (Merge Injected Code) option.
Public property FavorSizeOrSpeed Gets or sets a value indicating whether to favor code size or code speed. FavorSizeOrSpeed exposes the functionality of the compiler's /Os, /Ot (Favor Small Code, Favor Fast Code) options.
Public property FloatingPointExceptions Sets or gets whether user defined floating point exception handling is enabled.
Public property floatingPointModel Sets or gets the floating point model.
Public property ForceConformanceInForLoopScope Gets or sets a value indicating whether to force the compiler to conform to the local scope in a For loop. ForceConformanceInForLoopScope exposes the functionality of the compiler's /Zc:forScope (Force Conformance in for Loop Scope) option.
Public property ForcedIncludeFiles Gets or sets a value that specifies one or more forced include files. ForcedIncludeFiles exposes the functionality of the compiler's /FI (Name Forced Include File) option.
Public property ForcedUsingFiles Forces the use of a file name as if it had been passed to the #using Directive (C/C++) directive. ForcedUsingFiles exposes the functionality of the compiler's /FU (Name Forced #using File) option.
Public property FullIncludePath Gets a list of all directories included in the build; a concatenation of directories specified with /I and the directories specified in the VC++ Directories Property Page. Macros present in these directories will be evaluated as well.
Public property GeneratePreprocessedFile Gets or set the preprocessing option for this configuration. GeneratePreprocessedFile exposes the functionality of the compiler's /EP (Preprocess to stdout Without #line Directives) and /P (Preprocess to a File) options.
Public property GenerateXMLDocumentationFiles Sets or gets whether to generate XML documentation files.
Public property IgnoreStandardIncludePath Gets or sets a value that indicates whether to ignore the standard include path. IgnoreStandardIncludePath exposes the functionality of the compiler's /X (Ignore Standard Include Paths) option, the MIDL compiler's MIDL Property Pages: General option, and the Resource Compiler's Resources Property Pages option.
Public property InlineFunctionExpansion Gets or sets the level of inline function expansion for the build. InlineFunctionExpansion exposes the functionality of the compiler's /Ob (Inline Function Expansion) options.
Public property KeepComments Gets or sets a value indicating whether to suppress a comment strip from source code. KeepComments exposes the functionality of the compiler's /C (Preserve Comments During Preprocessing) option.
Public property MinimalRebuild Gets or sets a value indicting whether to detect changes to C++ class definitions and recompile affected source files. MinimalRebuild exposes the functionality of the compiler's /Gm (Enable Minimal Rebuild) option.
Public property ObjectFile Gets or sets a name to override the default object file name. ObjectFile exposes the functionality of the compiler's /Fo (Object File Name) option.
Public property OmitDefaultLibName Gets or sets whether the default library name is omitted.
Public property OmitFramePointers Gets or sets a value indicating whether to suppress framepointers. OmitFramePointers exposes the functionality of the compiler's /Oy (Frame-Pointer Omission) option.
Public property OpenMP Gets or set whether OpenMP is enabled.
Public property Optimization Gets or sets options for code optimization. Optimization exposes the functionality of the compiler's /Od (Disable (Debug)), /O1, /O2 (Minimize Size, Maximize Speed), and /Ox (Full Optimization) options.
Public property PrecompiledHeaderFile Gets or sets the path and/or name of the generated precompiled header file. PrecompiledHeaderFile exposes the functionality of the compiler's /Fp (Name .Pch File) option.
Public property PrecompiledHeaderThrough Gets or sets the header file name to use when creating or using a precompiled header file. PrecompiledHeaderThrough exposes the functionality of the compiler's /Yc (Create Precompiled Header File), and /Yu (Use Precompiled Header File) options.
Public property PreprocessorDefinitions Gets or sets one or more preprocessor defines. PreprocessorDefinitions exposes the functionality of the compiler's /D (Preprocessor Definitions) option, the MIDL compiler's MIDL Property Pages: General option, and the Resource Compiler's Resources Property Pages option.
Public property ProgramDataBaseFileName Gets or sets a name for a compiler-generated .pdb file and a base name for the required compiler-generated .idb file. ProgramDataBaseFileName exposes the functionality of the compiler's /Fd (Program Database File Name) option.
Public property RuntimeLibrary Gets or sets the run-time library for linking. RuntimeLibrary exposes the functionality of the compiler's /MD, /MT, /LD (Use Run-Time Library) options.
Public property RuntimeTypeInfo Gets or sets a value indicating whether to add code for checking C++ object types at run time (run-time type information). RuntimeTypeInfo exposes the functionality of the compiler's /GR (Enable Run-Time Type Information) option.
Public property ShowIncludes Gets or sets a value indicating whether to generate a list of include files with compiler output. ShowIncludes exposes the functionality of the compiler's /showIncludes (List Include Files) option.
Public property SmallerTypeCheck Gets or sets a value indicating whether to enable checking for conversion to smaller types. SmallerTypeCheck exposes the functionality of the compiler's /RTC (Run-Time Error Checks) option.
Public property StringPooling Gets or sets a value indicating whether to enable read-only string pooling for generating smaller compiled code. StringPooling exposes the functionality of the compiler's /GF (Eliminate Duplicate Strings) option.
Public property StructMemberAlignment Specifies 1-, 2-, 4-, 8-, or 16-byte boundaries for struct member alignment. StructMemberAlignment exposes the functionality of the C++ compiler's /Zp (Struct Member Alignment) option and the MIDL compiler's MIDL Property Pages: Advanced option.
Public property SuppressStartupBanner Suppresses the display of the startup banner and information messages.
Public property ToolKind Gets the name of the kind of tool.
Public property toolName Gets the name of the specified tool.
Public property ToolPath Gets the path to the specified tool.
Public property TreatWChar_tAsBuiltInType Gets or sets a value indicating whether to treat wchar_t as a built-in type. TreatWChar_tAsBuiltInType exposes the functionality of the compiler's /Zc:wchar_t (wchar_t Is Native Type) option.
Public property UndefineAllPreprocessorDefinitions Gets or sets a value indicating whether to undefine all previously defined preprocessor values. UndefineAllPreprocessorDefinitions exposes the functionality of the compiler's /U, /u (Undefine Symbols) option.
Public property UndefinePreprocessorDefinitions Gets or sets a value that specifies one or more preprocessor undefines. UndefinePreprocessorDefinitions exposes the functionality of the C++ compiler's /U, /u (Undefine Symbols) option and the MIDL compiler's MIDL Property Pages: Advanced option.
Public property UseFullPaths Gets or sets whether to use full paths.
Public property UsePrecompiledHeader Gets or sets a value that enables the creation or use of a precompiled header during the build. UsePrecompiledHeader exposes the functionality of the compiler's /Yc (Create Precompiled Header File) and /Yu (Use Precompiled Header File) options.
Public property UseUnicodeResponseFiles Designates whether the complier uses Unicode response files, or not.
Public property VCProjectEngine Gets a pointer to the project engine.
Public property WarnAsError Gets or sets a value indicating whether to enable the compiler to treat all warnings as errors. WarnAsError exposes the functionality of the C++ compiler's /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won (Warning Level) option and the MIDL compiler's MIDL Property Pages: General option.
Public property WarningLevel Gets or sets a value that represents how strictly the compiler checks for potentially suspect constructs. WarningLevel exposes the functionality of the C++ compiler's /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won (Warning Level) option and the MIDL compiler's /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won (Warning Level) option.
Public property WholeProgramOptimization Gets or sets a value indicating whether to enable cross-module optimizations by delaying code generation to link time. WholeProgramOptimization exposes the functionality of the compiler's /GL (Whole Program Optimization) option.
Public property XMLDocumentationFileName Gets or sets the XML documentation file name.

Top

Methods

  Name Description
Public method get_PropertyOption Infrastructure. Microsoft Internal Use Only.

Top

Remarks

The following new compiler options were added in Visual Studio 2005:

The following compiler options were removed in Visual Studio 2005:

  • /Op

  • /G6, /G7, and /GB

Examples

The following example demonstrates how to use the EnablePREfast and AdditionalOptions properties to set the /analyze:WX- switch. (Both properties are required to do this.) Specifying /analyze:WX- means that code analysis warnings will not be treated as errors when compiling with /WX. For more information, see /analyze (Enterprise Code Analysis).

To run this example, enter and run this example as outlined in How to: Compile and Run the Automation Object Model Code Examples. Then, in the new instance of Visual Studio, load a Visual C++ project and use the Add-in Manager to activate the add-in.

' Add reference to Microsoft.VisualStudio.VCProjectEngine.
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports Microsoft.VisualStudio.VCProjectEngine
Imports System.Text

Sub EnablePREfastExample(ByVal dte As DTE2)
    Dim prj As VCProject
    Dim cfgs, tools As IVCCollection
    Dim cfg As VCConfiguration
    Dim tool As VCCLCompilerTool
    Dim sb As New StringBuilder

    prj = CType(dte.Solution.Projects.Item(1).Object, _
      Microsoft.VisualStudio.VCProjectEngine.VCProject)
    cfgs = CType(prj.Configurations, _
      Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
    cfg = CType(cfgs.Item(1), _
      Microsoft.VisualStudio.VCProjectEngine.VCConfiguration)
    tool = CType(cfg.Tools("VCCLCompilerTool"), _
      Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool)

    sb.Length = 0
    sb.Append("Current project PREfast setting: " _
      & tool.EnablePREfast & Environment.NewLine)
    sb.Append("Flag: " & tool.AdditionalOptions)
    MsgBox(sb.ToString)

    ' Toggle PREfast setting.
    If Not (tool.EnablePREfast = True) Then
        ' PREfast is not enabled. Turn it and the WX- flag on.
        tool.EnablePREfast = True
        tool.AdditionalOptions = "/analyze:WX-"
    Else
        ' Toggle the opposite.
        tool.EnablePREfast = False
        tool.AdditionalOptions = "/analyze:WX"
    End If
    sb.Length = 0
    sb.Append("New project PREfast setting: " _
      & tool.EnablePREfast & Environment.NewLine)
    sb.Append("Flag: " & tool.AdditionalOptions)
    MsgBox(sb.ToString)
End Sub
// Add references to Microsoft.VisualStudio.VCProjectEngine and 
// System.Windows.Forms.
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using Microsoft.VisualStudio.VCProjectEngine;
using System.Text;
using System.Windows.Forms;

public void EnablePREfastExample(DTE2 dte)
{
    try
    {
        VCProject prj;
        IVCCollection cfgs, tools;
        VCConfiguration cfg;
        VCCLCompilerTool tool;
        StringBuilder sb = new StringBuilder();

        prj = (Microsoft.VisualStudio.VCProjectEngine.VCProject)
          dte.Solution.Projects.Item(1).Object;
        cfgs = 
          (Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
          prj.Configurations;
        cfg = 
          (Microsoft.VisualStudio.VCProjectEngine.VCConfiguration)
           cfgs.Item(1);
        tools = 
          (Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
          cfg.Tools;
        tool = 
          (Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool)
          tools.Item("VCCLCompilerTool");
                                
        sb.Length = 0;
        sb.Append("Current project PREfast setting: " +
          tool.EnablePREfast + Environment.NewLine);
        sb.Append("Flag: " + tool.AdditionalOptions);
        MessageBox.Show(sb.ToString());

        // Toggle PREfast setting.
        if (!(tool.EnablePREfast == true))
        {
            // PREfast is not enabled. Turn it and the WX- flag on.
            tool.EnablePREfast = true;
            tool.AdditionalOptions = "/analyze:WX-";
        }
        else
        {
            // Toggle the opposite.
            tool.EnablePREfast = false;
            tool.AdditionalOptions = "/analyze:WX";
        }
        sb.Length = 0;
        sb.Append("New project PREfast setting: " +
          tool.EnablePREfast + Environment.NewLine);
        sb.Append("Flag: " + tool.AdditionalOptions);
        MessageBox.Show(sb.ToString());
    }
    catch (System.Exception errmsg)
    {
        MessageBox.Show("ERROR! " + errmsg.Message);
    }
}

See Also

Reference

Microsoft.VisualStudio.VCProjectEngine Namespace

Other Resources

Walkthrough: Using /clr:pure Features