Preparing to use external projects

About this task

External projects make products and associated objects developed in one project (such as a library and the header files for the functions in it) available to another project. Normally you would add the project as a subproject so that you could get the header file. An external project is one way to set up your project structure to minimize the number and size of development projects needed by developers.

For example, Joe’s working version of his toolkit.exe executable is linked with the guilib.lib library. Joe is not making changes to guilib.lib and does not need a working version of it, but his executable is linked to the library, so he needs it to do his work. When Joe is ready to get the latest changes to guilib.lib, he will ensure that the guilib project is a member of his development project, then update it to bring in the newly built product file.

Based on this example, imagine if Joe was using products from ten or fifteen different projects, none of which needed to change. He would need development projects for each project and this could mean extra time when he updates to bring in the objects he needs. An external project can remedy this situation.

An external project contains only the products and header files needed to use those products. (It is called an "external project" because it makes those files available to other projects, but it is external to the project where those files are actually 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.) Note that 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, and developers whose code references those products can share the external projects. They do not need working versions of any projects that they do not personally need to modify.

Developers will share the products most recently checked in by the build manager when they update. If your site does not use baselines, then you should check in the products and external tasks after they pass integration testing. If you do use external projects, you will need to create work areas that are visible to everyone for the external baseline projects.

Note: The use of external projects is optional. Consider the product sharing needs of your team.

Feedback