Incluyendo bibliotecas pre comstackdas en el tree fuente

Tengo un proyecto de C ++ multiplataforma. En este proyecto, utilizamos varias bibliotecas comstackdas estáticamente de terceros que son bastante grandes y no fáciles de build.

Actualmente, nuestro tree fuente se ve así:

| +-3rdparty | +-include (initially empty) | +-lib (initially empty) | +-some-library | +-another-library | +-source 

Al verificar el código, un desarrollador primero buildía e instalaría "alguna biblioteca" y "otra biblioteca". El paso de installation pondría los files correctos en las carpetas de include y lib, y luego pueden build nuestro proyecto.

Para facilitar la construcción de nuestro proyecto, estaba pensando en eliminar "alguna-biblioteca" y "otra-biblioteca", y en su lugar solo colocar los files binarys incluidos y precomstackdos en carpetas de inclusión y lib. De esta forma, un nuevo desarrollador solo tendría que pagar el proyecto y buildlo de inmediato.

Mis preguntas son:

  1. ¿Es una mala práctica hacerlo? (es decir: incluidas las bibliotecas precomstackdas en su tree fuente).

  2. ¿Qué problemas / inconvenientes potenciales pueden popup de esta configuration?

  3. ¿Qué organización de carpetas sugerirías para tener en count las distintas plataforms (Windows, Mac OSX y Linux)?

Nota adicional: estamos usando Mercurial.

He trabajado con sistemas de control de versiones que se negaron rotundamente a conservar versiones antiguas de files binarys. Eso fue hace mucho time, y no creo que sea un problema con ningún VCS actual, pero revise antes de lanzar la idea.

Si la biblioteca de terceros se actualiza con frecuencia, su repository podría ser bastante grande.

Aparte de eso, lo he visto hecho y lo he visto funcionar.

Es bueno que intente ser multiplataforma, pero la combinación de dependencies con su fuente presenta múltiples problemas.

  • Dado que usted habla sobre la creación de dependencies, ¿cómo piensa asegurarse de que el código comstackdo pueda ejecutarse en la máquina de un desarrollador? Dudo que el código de Windows se ejecute bajo Os X, tal vez ni siquiera el Fedora Linux Rawhide en Debian Linux.

  • Si ya tengo las dependencies instaladas en mi sistema, ¿cómo puedo deshabilitar la installation de sus versiones? ¿Y por qué me importaría downloadlos en el check out?

  • Si alguna vez planea get este código en algunos distribuidores de distribución de Linux, le molestará sobre el estrecho acoplamiento que introdujo, ya que su enfoque es less necesario en el mundo de Linux, donde las bibliotecas compartidas funcionan bastante bien.

Por supuesto, su enfoque se sigue en muchos lugares, grandes y pequeños, pero ¿por qué debería repetir sus errores? Si realmente necesita proporcionar a sus desarrolladores un acceso directo para instalar estas dependencies, debe escribir un script configurable que instale las dependencies en algún prefijo. Y agregue algunos indicadores para deshabilitar la installation de dependencies específicas.

    Intereting Posts