Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>At my company, we used both approaches at the same time:</p> <ul> <li>We do two checkouts: one for the project, the other for the library.</li> <li>When the project needs to be compiled (via <code>Makefile</code>), we compile the library first.</li> <li>The library is then linked as if it was a binary-only library.</li> <li>When we release a project, we check whether the other projects still compile against the new library.</li> <li>When we release a project, we tag the library along with the project.</li> </ul> <p>This way you get the best of both worlds:</p> <ul> <li>common code is shared: all projects benefit from bug fixes and improvements</li> <li>source code is always fully available for understanding and debugging</li> <li>source code availability encourages library maintenance (fixings, improvements, and experiments)</li> <li>the library boundaries impose a more API-like approach: clearer interface and project embedding</li> <li>you can pass compile-time flags to the library to build a different flavors</li> <li>you can always go back in time if needed without library-vs-project mismatching hassles</li> <li>if you are in a hurry, you can put off the library check.</li> </ul> <p>The only drawback to this approach is that developers have not know what they are doing. If they modify the library, they should know that the change will impact on all projects. But you are already using a version control system and, if you use branches and the communication within your team is good, there should be no problem at all.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload