/// <summary> /// Cleans the build system cache and intermediate results. /// </summary> public static void Clean() { using (new ProfileEventScope("Clean")) { var graph = new TaskGraph(Globals.Root); graph.CleanCache(); } }
/// <summary> /// Cleans the build system cache and intermediate results. /// </summary> public static void Clean() { using (new ProfileEventScope("Clean")) { // Clear task graph cache var project = Globals.Project; TaskGraph graph; if (project == null) { graph = new TaskGraph(Globals.Root); graph.CleanCache(); return; } graph = new TaskGraph(project.ProjectFolderPath); graph.CleanCache(); // Pick targets to clean var customBuildTargets = Configuration.BuildTargets; var projectTargets = GetProjectTargets(project); var targets = customBuildTargets == null ? projectTargets : projectTargets.Where(target => customBuildTargets.Contains(target.Name)).ToArray(); foreach (var target in targets) { // Pick configurations to clean TargetConfiguration[] configurations = Configuration.BuildConfigurations; if (configurations != null) { foreach (var configuration in configurations) { if (!target.Configurations.Contains(configuration)) { throw new Exception(string.Format("Target {0} does not support {1} configuration.", target.Name, configuration)); } } } else { configurations = target.Configurations; } foreach (var configuration in configurations) { // Pick platforms to clean TargetPlatform[] platforms = Configuration.BuildPlatforms; if (platforms != null) { foreach (var platform in platforms) { if (!target.Platforms.Contains(platform)) { throw new Exception(string.Format("Target {0} does not support {1} platform.", target.Name, platform)); } } } else { platforms = target.Platforms; } foreach (var targetPlatform in platforms) { if (!Platform.BuildPlatform.CanBuildPlatform(targetPlatform)) { continue; } // Pick architectures to build TargetArchitecture[] architectures = Configuration.BuildArchitectures; if (architectures != null) { foreach (var e in architectures) { if (!target.Architectures.Contains(e)) { throw new Exception(string.Format("Target {0} does not support {1} architecture.", target.Name, e)); } } } else { architectures = target.GetArchitectures(targetPlatform); } foreach (var architecture in architectures) { if (!Platform.IsPlatformSupported(targetPlatform, architecture)) { continue; } //throw new Exception(string.Format("Platform {0} {1} is not supported.", targetPlatform, architecture)); var platform = Platform.GetPlatform(targetPlatform); var toolchain = platform.GetToolchain(architecture); var targetBuildOptions = GetBuildOptions(target, toolchain.Platform, toolchain, toolchain.Architecture, configuration, project.ProjectFolderPath, string.Empty); // Delete all intermediate files var intermediateFolder = new DirectoryInfo(targetBuildOptions.IntermediateFolder); if (intermediateFolder.Exists) { Log.Info("Removing: " + targetBuildOptions.IntermediateFolder); CleanDirectory(intermediateFolder); } } } } } } }