For example, Joe's working version of the toolkit.exe executable is linked with the guilib.lib library. Joe is not changing guilib.lib and does not need a working version of it. However, the executable is linked to the library, so Joe needs it to complete work. When ready to get the latest changes to guilib.lib, Joe ensures that the guilib project is a member of the development project. Joe then updates the project to bring in the newly built product file.
Based on this example, imagine if Joe was using products from 10 or 15 different projects, none of which required changes. Joe would need development projects for each project, which would mean extra time for update to bring in necessary objects. External projects remedy this situation.
An external project contains only the products and header files that need to use the products. (The project is external because it makes files available to other projects, but it is external to the project where those files are developed.)
Because external projects are counterparts to other projects, it is useful to give them similar names. For example, the external project corresponding to the guilib project might be named guilib_ext. (It is also useful to keep the same structure so that makefiles can be modified easily to reference the external project rather than the original project.) Adding a subproject is not necessary with some programs, such as Java™, where you do not need the header files and can add the library alone.
Now the build manager can create a baseline to check in the external projects and the products after they pass integration testing. Developers whose code references the products can share the external projects. They do not need working versions of any projects that they do not personally need to modify.
Developers share the products most recently checked in by the build manager when they update. If your site does not use baselines, check in the products and external tasks after they pass integration testing. If you do use external projects, create work areas that are visible to everyone for the external baseline projects.