The key concept is project cycles. A project cycle involves two or more projects that have mutual dependencies. For example, assume that Project1 contains parts A and C, and Project2 contains parts B and D. A depends on B, B depends on C, and C depends on D. If EGL builds Project1 first, it finds errors in parts A and C because it cannot resolve references to parts B and D. After it builds Project2, which produces no errors because A and C have been built in Project1, EGL builds Project1 again to resolve the errors in A and C.
Eclipse determines the build order by detecting the dependencies for each project, which EGL generates by using the .eglpath file (see “EGL build path”). If the workspace does not contain cycles, Eclipse determines the most efficient order and EGL can build all of the projects at once.
However, Eclipse does not take project cycles into account. If there are project cycles in the workspace, EGL might be able to modify the build order to improve workspace build times. When you click
, EGL moves projects that are involved in cycles to a more optimal spot in the build order.You can manually change the build order through the workspace preferences (
). Changing these preferences manually might cause build errors. You can also use the Build Order preference page to revert changes that the optimization operation introduced in the build order.You can change the Max iterations when building with cycles field on the Build Order preferences page. The value of this field limits the number of times that the build cycles through the projects. If this value is too low, the build might terminate before all errors are resolved.