Tengo un proyecto que utiliza 3-4 bibliotecas C / C ++ de código abierto diferentes.
Construí estas bibliotecas para varias plataformas y registré incluir archivos y bibliotecas estáticas para diferentes plataformas en mi proyecto.
Sin embargo, lucho con un par de problemas. Todos estos proyectos están relacionados con la gestión de dependencias. Y estoy buscando consejos sobre mejores prácticas.
1) ¿Cómo sé qué uso exactamente?
No tengo forma de obtener una versión de una biblioteca estática. Como resultado, necesito de alguna manera rastrear qué versión de lib estática estoy usando (¿puede ser SHA de un commit desde el que se creó)?
Esto es especialmente importante cuando necesito averiguar cuándo actualizar estas bibliotecas.
2) ¿Cómo reproduzco la compilación?
Podría haber tenido dificultades para construir una biblioteca específica para una plataforma específica. Me tomó un tiempo darme cuenta.
La próxima vez que necesite construir la misma biblioteca podría ser en medio año (cuando necesite actualizar por cualquier razón. Sin embargo, para ese momento, definitivamente no recordaré nada y un entorno en el que fue construido se habrá ido hace mucho tiempo.
3) ¿Debo bifurcar estas bibliotecas para tener una copia del código fuente?
Esta es una preocupación menor. Sin embargo, sigue siendo una preocupación. Es bueno asegurarse de que las compilaciones sean reproducibles (y eso requiere un código fuente).
fuente
Si los archivos de inclusión o los archivos libs ya no contienen un número de versión, agregue un archivo de texto "version.txt" (que contenga el número de versión) a cada carpeta lib y conéctelo a su VCS, junto con los archivos lib e include . Sin embargo, si versiona la fuente completa de la lib (punto 3), es probable que ya exista un archivo de código fuente que contenga el número de versión, por lo que no es necesario mantener el suyo para este caso.
Intenta automatizar tanto como puedas. Use scripts, archivos MAKE o archivos de sus herramientas de compilación favoritas. Ponga todo esto bajo control de la fuente. Si se requieren pasos manuales, escriba los detalles en un archivo de texto (por ejemplo, readme_build.txt) y póngalo también bajo control de origen.
Debe tener una copia del código fuente , pero bifurcar solo si es necesario (por ejemplo, si tropieza con un error urgente y el autor original no puede solucionarlo dentro de las restricciones de tiempo). O, si los autores usan un entorno de compilador diferente al suyo, y es necesario hacer algunos cambios para que la biblioteca funcione en su entorno. Sin embargo, tenga en cuenta que cada cambio en el código fuente original en su bifurcación probablemente dificulte la integración de actualizaciones en un momento posterior.
Sin embargo, recomiendo obtener una copia del código fuente original (sin codificar) de las bibliotecas que está utilizando. Eso le permitirá bifurcar o mantener la biblioteca más tarde si es necesario, incluso si el responsable original decide revocar las fuentes de la biblioteca de la web pública.
fuente