title: Circular linking libraries
body: <p>We have an application where the code is organized in several libraries, some of which depend on other of those libraries, so we have a dependency tree like</p>
  
  <pre><code>App
   |
   +--------+--------+
   |        |        |
   v        v        v
  lib1     lib2     lib3
   |        |
   v        v
  lib3     lib3
  </code></pre>
  
  <p>Recently somebody added a new method in lib3, which depends on a class defined in lib2 and, since that was generating circular includes, we made a forward declaration of the class needed in the header file present in lib3. </p>
  
  <p>Now, each library is compiled to a static library and then linked against its respectively linking list, so lib2 is in the linking listo of lib2 and also lib3 is in the liking list of lib2.</p>
  
  <p>This works perfectly so far, but I was wondering the drawbacks related to have that kind of compile and linking dependencies. I thought that might happen that a change in lib2 won't be noticed by lib3 unless it is recompiled, but I checked and any change in any header file in lib2 would trigger the recompilation of lib3 (a little luck here).</p>
  
  <p>Is there any other important drawback I should be aware of??</p>