1 changed files with 23 additions and 0 deletions
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
The SharpDevelop Build System |
||||
|
||||
=Build scheduling engine= |
||||
|
||||
Main class: ICSharpCode.SharpDevelop.Project.BuildEngine |
||||
|
||||
The scheduling engine component is usable independently from the project system. |
||||
Its main task is to take an IBuildable instance, determine its dependencies, and build everything |
||||
by calling IBuildable.StartBuild. |
||||
|
||||
Usage: |
||||
BuildEngine.StartBuild(buildable, buildOptions, buildFeedbackSink); |
||||
|
||||
What the build engine will do is to call |
||||
buildable.StartBuild(buildable.CreateProjectBuildOptions(buildOptions)) |
||||
for the passed buildable (and for all of its dependencies). |
||||
|
||||
The build engine uses GetDependencies calls to build the full dependency graph. It splits up all projects in this graph into two sets: |
||||
projects which have no dependencies and are ready to be built, and projects which need to wait for dependencies first. |
||||
The build engine calls StartBuild concurrently on up to buildOptions.ParallelBuild* projects which are ready. Whenever a project finishes building sucessfully, |
||||
the engine checks whether this causes any other projects to become available to be built. |
||||
If there are more projects available to be built than parallel builds are allowed, then the scheduling algorithm tries to maximize the amount of projects |
||||
that are available by first picking those projects that cause the most other projects to become available. |
Loading…
Reference in new issue