Si conoces alguna forma de hacer lo que quiero estaria genial.
Es que justamente vos podes hacer eso con un .c y un .h aparte.
Cada IDE se maneja de forma especial... Pero masomenos siguen un mismo patron.. Voy a hablar de MPLAB X porque es lo que estas usando.
Vos podes tener tu libreria en otra carpeta,, supongamos que lo tenes en C:/librerias y tus proyectos en C:/proyectos/proyecto1.X/ y vos no queres copiar y pegar.
En MPLAB necesitas 2 cosas para poder usar los archivos .h y .c de la carpeta librerias. Voy a seguir con mi ejemplo de antes (usando el mismo nombre de archivos, es decir puertos.* es mi libreria).
Primero necesitas decirle al compilador desde donde sacas los archivos para el #include, eso lo haces desde las propiedades del proyecto ( click derecho sobre el proyecto, propiedades)
Al final hay uno que dice "
XC8 Compiler" Y dentro de las opciones uno que se llama
Include directories, si haces click, se te abre una ventana a la cual vas a poder agregarle la direccion "C:/librerias" a ese proyecto (fijate que hay un boton que dice Browse, que permite la seleccion)
Una ves agregado este valor, nos va a permitir hacer uso del #include, es decir si pongo #include "puertos.h" va a incorporar el .h de C:/librerias .
En el navegador de proyectos no es necesario agregar el .h, pero mejor hacerlo asi sabes que se usa.. Me refiero en la seccion de "Header Files"
Hasta aca logramos que reconozca los .h, el problema es que no va a encontrar ningun .c, en otros IDE como eclipse, en este punto ya terminarias, ya que buscaria en la carpeta de librerias el .c con el mismo nombre que el .h. Pero estamos en MPLAB X. Para que tambien compile el .c necesitamos agregarlo al proyecto, es decir bajo la seccion "Source Code" lo agregamos al archivo .c, a pesar que esta en otra carpeta. Podemos tambien crear una carpeta para diferenciarlo.
Quedandote asi:
Ver adjunto, que no me lo deja poner el foroY no necesitas copiar y pegar cualquiera de tus librerias, y tenes el codigo fuente en un solo lugar.
Es decir no hay un control de versiones en donde digamos que los proyectos que tienen una copia de la libreria original tambien vean la actualizacion. Por eso estoy intentando usar GitHub con la implementacion que tiene MPLABx.
Pero es otra cosa totalmente distinta un control de versiones a lo que me planteas.
Podes mantener un control de versiones, lo vas a tener que hacer por SEPARADO, tus librerias por un lado y tu proyecto por el otro, obviamente necesitas de ambos para compilarlo.
Ya que si los mantenes juntos una version va a estar atada a la otra. Y pienso que vos queres que justamente actualizar 1 solo lugar te sirva para todos. Y es aca lo mas importante es la interfaz de tu libreria que se mantenga lo mas constante posible y que se totalmente independiente, ya que de cambiar algo en la misma, deberias cambiar el codigo de tus proyectos tambien, atandote a lo que ya tenes.
PD: Lo unico que no logre es que al poner #include me muestre tambien los archivos de c:/librerias , asi que vas a tener que escribirlo a mano y no ayudarte del auto-complete