public override BackgroundProcess Build(NativePlugin plugin, NativeBuildOptions buildOptions) { StringBuilder cmakeArgs = GetBasePluginCMakeArgs(plugin); AddCmakeArg(cmakeArgs, "CMAKE_CONFIGURATION_TYPES", "Debug;Release"); BuildType buildType; if (buildOptions.BuildType == BuildType.Default) { buildType = EditorUserBuildSettings.development ? BuildType.Debug : BuildType.Release; } else { buildType = buildOptions.BuildType; } AddCmakeArg(cmakeArgs, "CMAKE_BUILD_TYPE", buildType.ToString()); AddCmakeArg(cmakeArgs, "WINDOWS", "ON", "BOOL"); cmakeArgs.AppendFormat("-B{0}/{1} ", "Windows", buildOptions.Architecture.ToString()); AddCmakeArg(cmakeArgs, "ARCH", buildOptions.Architecture.ToString(), "STRING"); int vsVersion = VisualStudioVersion; if (vsVersion == -1) { vsVersion = InstalledVisualStudios.Last <int>(); } cmakeArgs.AppendFormat("-G \"{0} {1}\" ", "Visual Studio", vsVersion); //Default is x86 if (buildOptions.Architecture == Architecture.x86_64) { AddCmakeArg(cmakeArgs, "CMAKE_GENERATOR_PLATFORM", "x64", "STRING"); } buildOptions.OutputDirectory = CombineFullPath(plugin.buildFolder, "Windows", buildOptions.Architecture.ToString()); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = CMakeHelper.CMakeLocation; startInfo.Arguments = cmakeArgs.ToString(); startInfo.WorkingDirectory = plugin.buildFolder; BackgroundProcess backgroundProcess = new BackgroundProcess(startInfo); backgroundProcess.Name = string.Format("Building \"{0}\" for {1} ({2})", plugin.Name, "Windows", buildOptions.Architecture.ToString()); return(backgroundProcess); }
public static string FindBestVisualStudio() { var vs = InstalledVisualStudios.OrderByDescending(kvp => kvp.Key).Select(kvp2 => kvp2.Value).FirstOrDefault(); return(vs == null ? null : vs.Last().Path); }