Administrar bibliotecas personales en C

A lo largo de los años, he acumulado código que es común en mis proyectos y he decidido dividirlo en bibliotecas para facilitar su reutilización.

Hasta hace poco, estaba contento con solo copyr los files necesarios en mi proyecto actual, pero eso empieza a ser ineficiente; Tengo que include la fuente de estas bibliotecas en cada proyecto de git y si encuentro un error, tengo que actualizar todos los proyectos utilizando el código de error.

Buscando alnetworkingedor, parece que los git submodules pueden ser una solución. ¿Hay otras alternativas? Me imagino que es común que los progtwigdores tengan estas "bibliotecas personales". ¿Cómo los manejas?