public static void GetCMakeVersion(Action <string> callback, bool refresh = false) { if (!refresh) { string version = EditorPrefs.GetString("cmakeVersion"); if (!string.IsNullOrEmpty(version)) { cmakeVersion = version; callback(version); return; } } ProcessStartInfo startInfo = new ProcessStartInfo(CMakeLocation, "--version"); BackgroundProcess backgroundProcess = new BackgroundProcess(startInfo); backgroundProcess.Name = "Getting CMake version \"cmake --version\""; backgroundProcess.Exited += (exitCode, outputData, errorData) => { if (exitCode == 0) { outputData = outputData.ToLower(); if (outputData.Contains("version")) { outputData = outputData.Substring(outputData.IndexOf("version") + "version".Length).Trim().Split(' ')[0]; } EditorPrefs.SetString("cmakeVersion", outputData); cmakeVersion = outputData; callback(outputData); } else { errorData = "Not able to get CMake version. Are you sure CMake is installed?\n" + errorData; throw new Exception(errorData); } }; backgroundProcess.Start(); }
public void Build() { bool nothingToBuild = true; foreach (NativeBuildOptions options in buildOptions) { if (!options.isEnabled) { continue; } nothingToBuild = false; PluginBuilderBase builder = PluginBuilderBase.GetBuilderForTarget(options.BuildPlatform); builder.PreBuild(this, options); BackgroundProcess buildProcess = builder.Build(this, options); buildProcess.Exited += (exitCode, outputData, errorData) => { if (!string.IsNullOrEmpty(outputData)) { string log = string.Format("{0}:\n{1}", buildProcess.Name, outputData); File.WriteAllText(PluginBuilderBase.CombineFullPath(options.OutputDirectory, "Build_StdOut.log"), log); Debug.Log(log); } if (!string.IsNullOrEmpty(errorData)) { string log = string.Format("{0}:\n{1}", buildProcess.Name, errorData); File.WriteAllText(PluginBuilderBase.CombineFullPath(options.OutputDirectory, "Build_StdErr.log"), log); if (exitCode == 0) { Debug.LogWarning(log); } else { Debug.LogError(log); } } }; BackgroundProcess installProcess = builder.Install(this, options); installProcess.StartAfter(buildProcess); installProcess.Exited += (exitCode, outputData, errorData) => { if (!string.IsNullOrEmpty(outputData)) { string log = string.Format("{0}:\n{1}", installProcess.Name, outputData); File.WriteAllText(PluginBuilderBase.CombineFullPath(options.OutputDirectory, "Install_StdOut.log"), log); Debug.Log(log); } if (!string.IsNullOrEmpty(errorData)) { string log = string.Format("{0}:\n{1}", installProcess.Name, errorData); File.WriteAllText(PluginBuilderBase.CombineFullPath(options.OutputDirectory, "Install_StdErr.log"), log); if (exitCode == 0) { Debug.LogWarning(log); } else { Debug.LogError(log); } } if (exitCode == 0) { builder.PostBuild(this, options); } }; buildProcess.Start(); } if (nothingToBuild) { Debug.Log(string.Format("{0}: Nothing to build.", Name)); } }