Tengo dificultades para entender por qué debería desarrollar bibliotecas internas para usar exclusivamente para desarrollar aplicaciones internas. Aprecio que si quiero usar el software que alguien fuera de la organización ha escrito, pueden enviarme sus archivos de encabezado y archivos .a o .so y simplemente puedo vincularlo a mi proyecto (suponiendo que estén compilados en el mismo entorno) .
Pero, ¿por qué se debe desarrollar una biblioteca interna solo para vincularla a una aplicación interna cuando tengo acceso al encabezado y a los archivos de implementación y puedo incluirlos en mi árbol fuente y compilarlos todos juntos?
En otras palabras: si se escribe algún código fuente, ¿cómo decide si debe compilarse en una biblioteca binaria y vincularse a su aplicación o simplemente incluirse en los archivos fuente del proyecto y compilarse regularmente?
Cuando digo 'incluir' archivos en cada proyecto, no me refiero a copiar y pegar cada archivo en el árbol de origen del proyecto que se está desarrollando actualmente. Me refiero a desarrollar algún directorio / biblioteca (separado de cualquier proyecto) que contenga código fuente común que se pueda incluir en los archivos de un proyecto de la manera habitual, es decir, #include.
PD Estoy hablando del desarrollo de c / c ++ aquí para múltiples aplicaciones de escritorio.