Beispiel #1
0
        /// <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);
        }