Relative work areas

When used by another project, a relative subproject resides in the work area of the parent project as if it were a subdirectory. This is useful when you must structure your code into subprojects for performance reasons, or if your makefiles or tools are written to use relative paths.

The following example shows the work area for the same projects shown in the previous example, except that the bar-1 subproject is relative instead of absolute.

For WindowsThe following output shows a Windows work area:
c:\ccm_wa\ccm_tools
    foo-1\
        foo\
            a.c
            b.c
            bar\
                c.c
For UNIXThe following output shows a UNIX work area:
/users/joe/ccm_wa/ccm_tools
    foo-1\
        foo\
            a.c
            b.c
            bar\
                c.c

You can use a relative subproject as a subproject only once because it resides in the work area of the parent project and can be synchronized only to one location. If you want to use a relative project in multiple locations, you must use multiple versions of the project.

Projects on both the Windows and UNIX clients are absolute by default when they are created. If you check out a new version of a project, the new work area of the version is relative only if you check it out from a relative project. Otherwise, it is absolute.

If the makefiles in a project hierarchy reference the members of a subproject through a relative path (as if the subproject is a subdirectory), or if you are unable to use a symbolic link to a subproject directory, you must keep the project relative. If the makefiles in a project hierarchy reference the members of a subproject (as if the subproject is in an entirely unrelated directory structure), the subproject can be absolute.

You can change your makefiles to work with either absolute or relative projects, or a combination of both. Alternatively, you can set up your subprojects as either absolute or relative so that your existing makefiles can recognize the work area directory structure.


Feedback