Trabajar correctamente con librerías

Started by warrior_rockk, May 18, 2016, 02:42:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

warrior_rockk

Como se ha comentado en los posts que se refieren a la capacidad de compilar e incluir las librerías data-code (dcl), no está implementada la exportación de defines o constantes, con lo que, se debe incluir un archivo .h con ellos. Hasta aquí está claro. ¿Pero que pasa cuando la complejidad de la librería impide tener todas las constantes o defines en un mismo archivo de definición?
Supongamos una librería que se compone de varios .prgs y varios .h cada uno de ellos conteniendo su categoría de constantes y defines, por tema de claridad y ordenación. En ese caso, no sirve el uso de la dcl porque se pierde esa información.
Por otro lado, si intentamos trabajar con la librería con el código fuente y agregarla con include, tenemos el problema de que si la librería está en un directorio distinto al programa que la llama, fallan las llamadas a los includes que tenga los archivos de la librería porque, evidentemente, el path apunta al directorio del programa en cuestión.
¿Como resolver esta situación en este caso?


Saludetes,

SplinterGU

crea un include principal que incluya los includes hijos...

ejemplo

libblah.h

#include "defines1.h"
#include "defines2.h"

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

Pero el problema es ese, que si el include "padre" y sus hijos, están en un directorio distinto al programa que llama la librería, no se incluye correctamente porque el path apunta al programa que llama la librería. Y llamar a todos los includes desde el programa principal tampoco es elegante porque la idea es hacer include del archivo principal de la librería y que sea la librería la que se encargue de incluir lo que necesite...

SplinterGU

el include de la libreria no tiene por que ser el include de los sources, con la distribucion podes tener un include especial, por otro lado, no necesitas especificar los paths por linea de comando, lo podes hacer por codigo, asi...

#include "path1/include1.h"
#include "path2/include2.h"
...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

Claro pero ese path1 y 2, quisiera que fuesen relativos al path de la librería y no absolutos, pero como el path absoluto es la del programa... No se si me explico...

SplinterGU

#5
es relativo, no al path de la libreria, sino al path del parametro -i o del directorio donde estas compilando.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

Esa era la clave!! El parámetro —i del compilador! Ahí si que puedo definir el directorio de includes de la librería. Muchas gracias y disculpa por no verlo en la documentación!

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2