You can set up dependency relationships between projects using the Project Dependencies dialog. Project dependencies make it possible to build solutions in the correct order and, where the target permits, to load and delete applications and libraries in the correct order. A typical usage of project dependencies is to make an executable project dependent upon a library executable. When you elect to build the executable, the build system will ensure that the library it depends upon is up to date. In the case of a dependent library, the output file of the library build is supplied as an input to the executable build, so you don't have to worry about it.

Project dependencies are stored as project properties and, as such, can be defined differently based upon the selected configuration. You almost always want project dependencies to be independent of the configuration, so the Project Dependencies dialog selects the Common configuration by default.

To make one project dependent upon another:
  1. Choose Project > Project Dependencies.
  2. From the Project dropdown, select the target project that depends upon other projects.
  3. In the Depends Upon list box, select the projects the target project depends upon and deselect the projects it does not depend upon.

Some items in the Depends Upon list box may be dimmed, indicating that a circular dependency would result if any of those projects were selected. In this way, CrossStudio prevents you from constructing circular dependencies using the Project Dependencies dialog.

If your target supports loading multiple projects, the Build Order also reflects the order in which projects are loaded onto the target. Projects will load, in order, from top to bottom. Generally, libraries need to be loaded before the applications that use them, and you can ensure this happens by making the application dependent upon the library. With this dependency set, the library gets built and loaded before the application does.

Applications are deleted from a target in reverse of their build order; in this way, applications are removed before the libraries on which they depend.