¿Es bueno adjuntar una biblioteca gráfica al repository git o quizás downloadla a través de cmake?

Como en el título, me pregunto qué es mejor, adjuntar bibliotecas gráficas (por ejemplo, glew, glm, glfw, etc.) en mi repository de git, o crear un module especial de cmake que lo descargue durante la construcción.

Escuché que no es apropiado agregar bibliotecas para repo explícitamente, especialmente si son grandes, pero hacer cmake modules para cada biblioteca puede ser muy infernal …

¿Cuál en tu opinión es mejor manera? Tal vez tienes alguna otra idea? ¿Cuál es tu experiencia con eso?

PD: uso en mi proyecto cmake.

Editar: puede suponer que las bibliotecas tienen alnetworkingedor de 10-20MB y otros files de proyecto <5MB.

Estamos hablando de dos problemas distintos aquí: Configuración de compilation y configuration de distribución.

En general, la configuration de su proyecto y compilation debe ser lo más mínima posible y basarse en la installation de bibliotecas en todo el sistema donde corresponda. Esto es importante para prepararse, por ejemplo, para las distribuciones de Linux donde un administrador de packages realiza un seguimiento de las dependencies y las comstackciones deben realizarse contra las bibliotecas instaladas a través del gestor de packages.

Configuración de distribución OTOH se preocupa por las diversas forms en que su proyecto se distribuye a los usuarios finales. Dicha configuration de distribución debería permitir la configuration de comstackciones con bibliotecas instaladas en todo el sistema (como lo quiere para el empaquetado de Linux), pero también producir comstackciones autónomas que también cubran la import y creación de versiones exactas de las bibliotecas requeridas (no lo hace). quiero usar automáticamente la versión más reciente, porque eso podría romper tu compilation).

En ese sentido, la configuration de distribución es responsable de la especialización de configuraciones de compilation. Un buen enfoque para comstackciones autónomas (que incluyen bibliotecas de terceros) es search y comstackr las dependencies en el tree de compilation (¿está haciendo construcciones de tree de origen?).

Si la biblioteca es un repository de git, puede agregarlo como submodule de git a su proyecto.

De la documentation de Git (énfasis mío):

Un submodule le permite mantener otro repository de Git en un subdirectory de su repository. El otro repository tiene su propio historial, que no interfiere con el historial del repository actual. Esto se puede usar para tener dependencies externas, como bibliotecas de terceros, por ejemplo.