以下示例显示了先前示例中显示的相同项目的工作区,除了 bar-1 子项目是相对工作区,而非绝对工作区。
c:\ccm_wa\ccm_tools
foo-1\
foo\
a.c
b.c
bar\
c.c
/users/joe/ccm_wa/ccm_tools
foo-1\
foo\
a.c
b.c
bar\
c.c
只可以将相对子项目用作子项目一次,原因是该相对子项目驻留在父项目的工作区中,并且只能同步到一个位置。如果想在多个位置中使用相对项目,那么必须使用该项目的多个版本。
缺省情况下,Windows 和 UNIX 客户机上的项目在创建时都是绝对项目。如果检出项目的新版本,那么仅当从相对项目检出工作区时,新工作区的版本才为相对。否则,即为绝对。
如果项目层次结构中的 makefile 通过相对路径引用子项目的成员(就如同子项目是子目录),或无法使用指向子项目目录的符号链接,那么必须保持项目的相对性。如果项目层次结构中的 makefile 引用子项目中的成员(就如同子项目是完全不相关的目录结构),那么子项目可以为绝对。
可以更改 makefile 以使用相对或绝对项目,或是两者的组合。或者,可以将子项目设置为相对或绝对项目,以便现有 makefile 可以识别工作区目录结构。