2)Parte 2.- Definicion de las reglas (...continuacion...)
Ahora haremos un alto, para que todavia sea mas preciso.
Como bien sabeis, teneis una variables de entorno disponibles para harbour y
que son de gran utilidad a la hora de generar las librerias y ejecutables de
harbour, y que son necesarias para saber que make debe de ejecutar dependiendo
del sistema que tengamos montado, como el compilador de C, etc...
Bien, dicho sistema tambien hara uso de dichas variables de entorno, o en su
defecto, podemos redefinirlas para que contengan el valor que queramos.
Como yo, supongo que muchos de vosotros tambien, tengo varios harbour para
distintos compiladores, entonces el usar el PATH, a veces es un engorro.
La solucion es tan sencilla como definir simplemente estas variables de
entorno:
Rules.make--------------------------------
#Para con Windows , añadido
HB_COMPILER = mingw32
HB_BIN_INSTALL = c:/hargw/harbour/bin
HB_INC_INSTALL = c:/hargw/harbour/include
HB_LIB_INSTALL = c:/hargw/harbour/lib
Al principio de la linea le informo , en este caso especial, que reescriba las
variables de entorno a estos valores, asi no tengo que modificar nada de .bat,
etc... del sistema en cuestion.
[ Umm.. un apunte que se me olvidaba...aqui solamente se van a usar
herramientas GNU, un dia de estos escribire porque. ]
Pasaremos por algo lo 'obvio' y que por deduccion es muy simple, y nos
pararemos en lo mas interesante.
#Opciones genericas del Make ( Generic make options )
ifeq ($(HB_COMPILER),mingw32)
CFLAGS += -Wall `pkg-config --cflags gtk+-2.0` -mms-bitfields -mwindows -I.
else
CFLAGS += -Wall -I.
endif
GT_LIBS=-lgtcgi
Aqui teneis una caracteristica ifeq(), significa que si en la variable
HB_COMPILER esta la cadena mingw32 , CFLAGS sera igual a un valor o a otro.
[ Nota: Dentro de las herramientas GNU que ha sido portadas a otras
plataformas como Windows, donde dice pkg-config, solamente funcionara si
habeis instalado y haceis correr el CygWin y estais en ese entorno.
Ahora bien, si haceis uso simplemente del compilador gcc, mingw32, desde
una consola comun de Windows, dicha cadena debe ser montada como:
$(shell pkg-config --cflags gtk+-2.0) ]
Bien, despues podemos definir el driver GT a usar de harbour, simplemente
donde pone la linea GT_LIBS, podeis definir el driver que querais.
[Nota: Aqui explicare haciendo uso de dos sistemas a la vez ya sea a traves
de Windows o de GNU/Linux]
Las macros que nos interesan, por ser programadores de Harbour, las explicare,
aunque generalmente ESO NO LO TOCAREIS!!
LIBFILES_ += Aqui definiremos las librerias propia de Harbour.
Esto no deberias de tocarlo, excepto si le dan por añadir alguna libreria
que no la tengas definida, definela aqui.
LIBFILES_+=Libreria del sistema que nos hagan falta, por ejemplo
para GNU/Linux debemos de linkar la -lgpm, para soporte del mouse en consola.
Si os fijais muy bien, vereis que hay un += y no un = a secas, eso es muy
importante para no machacar lo que previamente habia definido, asi que
tenerlo en cuenta.
Ahora veremos unas macros que las usaremos en otros makefiles y que finalmente
seran vistas desde aqui, para que veas que son y de donde vienen.
LIBDIR_ = $(LIBDIR) -L$(HB_LIB_INSTALL)
LIBS_= $(LIBS) $(LIBFILES_)
&(LIBDIR) es una macro declarada en el makefile de los directorios, y que nos
permite usarla EXCLUSIVAMENTE en ese makefile para permitir buscar librerias
en otra ruta distinta a la que tenemos originalmente a partir de
HB_LIB_INSTALL.
&(LIBS) es una macro que se compartara exactamente IGUAL a LIBDIR, pero en
este caso sera para librerias en concreto.
No busqueis en Rules.make, que no estan aqui ;-), si no que vienen impuestas
a traves de otros makefiles si estuvisen declaradas.
Despues viene el determinar el tipo de codigo que queremos procesar, y se
lo indicaremos a traves de la macro SOURCE_TYPE en nuestro makefile,
y por defecto cogera prg si no la hemos definido.
NOTA:
Donde pone strip, es una tool de GNU, por lo tanto, debes de tener las
GNU tools instaladas, sino no te funcionara, sirve para quitar simbolos
de debugger a los ficheros objetos
Te lo explico para que no pierdas el tiempo buscando... que parecemos ya a
google con tanto buscar ;-)
Despues vienen por lo que se conoce como reglas implicitas , como por ejemplo,
esta, que la comentare por ser un tanto especial.
%$(EXETYPE):%.o
$(CC) -o$@ $< $(LIBDIR_) $(LIBS_)
Para los que no saben o saben un poco, como yo, del uso del Make, una regla
implicita, es aquella por la cual utiliza los sufijos
(extensiones de los archivos) para determinar que comandos debe ejecutar.
[ Nota: Antes unas nociones basicas sobre variables automaticas.
$<. El nombre del primer prerequisito.
$@. El nombre del archivo del objetivo de la regla. ]
Como nuestro ejecutable va ser posible crearlo tanto en Windows como en
GNU/Linux, el EXETYPE puede ser o .EXE o simplemente nada, pues ya debeis
saber que en GNU/Linux no existe el concepto de extension de archivo, si no
si se puede o no se puede ejecutar.
Como veis , es una mera introduccion al fichero Rules.make, cuyo objetivo
no es explicar cada uno de los comandos, si no un poco su funciomaniento,
para mas adelante ver la importancia de este fichero en las siguientes
definiciones de los Makefiles que nos quedan por ver.
..continuara....
Me gustaria saber vuestra opinion al respecto sobre este tema,
¿ te parece interesante o por el contrario te estas aburriendo...ohhh ?
En la siguiente entrega...
Veremos la practica de todo este pollo,
y la importancia de Rules.make, que ya digo esto practicamente ni lo
tendreis que tocar, y como desde una simple instruccion podemos
compilar, generar librerias y generar la aplicacion en un instante...
Muy bueno Rafa. E interesante. El tener un solo make para todas las plataformas y sencillo de utilizar (una vez bien definida las reglas que amablemente estas definiendo ;-)) )
Espero el proximo capitulo con impaciencia ;-)
Saludos y gracias
Escrito por Rafa R.Gaona a las Julio 15, 2004 09:55 AM网络营销软件
网络营销软件
网络营销软件
群发软件
群发软件
---
群发软件
博客群建软件
网络营销软件
论坛群发软件
网站排名软件
群发软件
推广小助手破解版
论坛群发
网站排名软件
群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件博客群发软件网络营销软件网络营销软件
网站排名软件网站排名软件网站优化软件信息群发软件信息群发软件信息群发软件论坛群发软件网站推广软件网站推广软件博客群发软件博客群发软件
群发软件
网络营销软件
论坛群发
网站推广软件
群发软件群发软件博客群发软件论坛群发软件网络营销软件论坛群发软件
信息群发软件推广软件网站推广软件网络营销软件网站推广软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件
网站排名软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
网站推广软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
博客群发软件
信息群发软件
论坛群发软件
信息群发软件
博客群发软件
qq群发软件
邮件群发软件
博客群建软件
企业名录搜索软件
信息群发软件
邮件群发软件
论坛群发软件
博客群发软件
网站推广软件
网络营销软件
全能营销破解版
网络营销软件
论坛群发软件
论坛群发软件
论坛群发软件
网络营销软件
信息群发软件
信息群发软件
信息群发软件
群发软件
论坛群发软件