/// <summary> /// Gets the default compiler which should be used, if it's not set explicitly by the target, command line, or config file. /// </summary> /// <returns>The default compiler version</returns> internal static WindowsCompiler GetDefaultCompiler() { // If there's no specific compiler set, try to pick the matching compiler for the selected IDE object ProjectFormatObject; if (XmlConfig.TryGetValue(typeof(VCProjectFileGenerator), "Version", out ProjectFormatObject)) { VCProjectFileFormat ProjectFormat = (VCProjectFileFormat)ProjectFormatObject; if (ProjectFormat == VCProjectFileFormat.VisualStudio2017) { return(WindowsCompiler.VisualStudio2017); } else if (ProjectFormat == VCProjectFileFormat.VisualStudio2015) { return(WindowsCompiler.VisualStudio2015); } else if (ProjectFormat == VCProjectFileFormat.VisualStudio2013) { return(WindowsCompiler.VisualStudio2013); } } // Second, default based on what's installed, test for 2015 first DirectoryReference VCInstallDir; if (TryGetVCInstallDir(WindowsCompiler.VisualStudio2015, out VCInstallDir)) { return(WindowsCompiler.VisualStudio2015); } if (TryGetVCInstallDir(WindowsCompiler.VisualStudio2013, out VCInstallDir)) { return(WindowsCompiler.VisualStudio2013); } if (TryGetVCInstallDir(WindowsCompiler.VisualStudio2017, out VCInstallDir)) { return(WindowsCompiler.VisualStudio2017); } // If we do have a Visual Studio installation, but we're missing just the C++ parts, warn about that. DirectoryReference VSInstallDir; if (TryGetVSInstallDir(WindowsCompiler.VisualStudio2015, out VSInstallDir)) { Log.TraceWarning("Visual Studio 2015 is installed, but is missing the C++ toolchain. Please verify that \"Common Tools for Visual C++ 2015\" are selected from the Visual Studio 2015 installation options."); } else if (TryGetVSInstallDir(WindowsCompiler.VisualStudio2017, out VSInstallDir)) { Log.TraceWarning("Visual Studio 2017 is installed, but is missing the C++ toolchain. Please verify that \"Common Tools for Visual C++ 2015\" are selected from the Visual Studio 2015 installation options."); } else { Log.TraceWarning("No Visual C++ installation was found. Please download and install Visual Studio 2015 with C++ components."); } // Finally, default to VS2015 anyway return(WindowsCompiler.VisualStudio2015); }