We have several common libraries used by our projects; we have set those up to be build configurations in TC along with the projects we ship. We then set up our projects to have build triggering dependencies on the common libraries in TC. After setting up multiple build agents on the same machine I noticed that it was recommended not to use an absolute checkout path or use the clean directory before building option. I understand why it is not recommended but I do not know how to set up the common libraries/projects so they can reference correctly.
Our VCS has a structure like this:
In TC we have a project for Library 2 and a build configuration for Version 2. That build configuration is attached to a VCS root that looks like $\Common\Library 2\Version 2\.
We also have a project for Shippable 1 and a build configuration for Version 1. That build configuration is attached to a VCS root that looks like $\Products\Shippable 1\Version 1\
Right now the checkout directory for S1V1 looks like D:\TeamCityCode\Products\Shippable 1\Version 1
The L2V2 checkout directory looks like D:\TeamCityCode\Common\Library 2\Version 2
Since S1V1 has a reference to L2V2 that is relative (..\..\..\Common\Library 2\Version 2), it works well (..\..\..\ = D:\TeamCityCode). But I think that if I change my checkout directory for S1V1 to be relative, it will not be able to reference L2V2 correctly.
I am wondering what is the recommended way to set up Team City for shared libraries and projects that reference them with relative paths?