Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: ZüNdFoLGe en 20 de Febrero de 2008, 01:22:21 PM

Título: cabezal comun a todas las clases (eclipse)
Publicado por: ZüNdFoLGe en 20 de Febrero de 2008, 01:22:21 PM
Bueno son alrededor de 300 clases y tengo que poner un cabezal comun a todas. Hay alguna herramienta en eclipse para hacerlo? A mano es muy jodido  :cry:
Título: cabezal comun a todas las clases (eclipse)
Publicado por: ZüNdFoLGe en 20 de Febrero de 2008, 10:53:10 PM
:twisted:  ctrl+C   :twisted:  ctrl+V  :twisted: ctrl+C  :twisted:  ctrl+V :twisted:  joder :evil:
Título: cabezal comun a todas las clases (eclipse)
Publicado por: Tei en 21 de Febrero de 2008, 01:26:19 AM
Supongo que puedes hacer un script, que lo haga, concatenando el mismo fichero a todos tus ficheros.

algo asi como esto:

for $file ( @ficheros)  {
copy noseque.head+$file  out/$file
}
Título: cabezal comun a todas las clases (eclipse)
Publicado por: Zaelsius en 21 de Febrero de 2008, 02:02:08 AM
Creo que podrías usar un "precompiled header" para ello, evitando así tocar cada fichero individual, pero no sé como se configuraría tal parámetro del proyecto en Eclipse.
Título: cabezal comun a todas las clases (eclipse)
Publicado por: ZüNdFoLGe en 21 de Febrero de 2008, 11:41:59 AM
Cita de: "Tei"Supongo que puedes hacer un script, que lo haga, concatenando el mismo fichero a todos tus ficheros.

algo asi como esto:

for $file ( @ficheros)  {
copy noseque.head+$file  out/$file
}

entiendo...pero creo que seria

cat $miClase $header > $miClase


pero tengo 2 dudas:
* como paso todas las clases como parametro
* desde donde corro el script

desde consola eso seria algo como:


copy clase1.java + header.java


a la clase1  se le concatena el contenido de header, al inicio. Habria que iterar (como tu pusiste) sobre todas las clases y ejecutarlo...el tema es como  :D
Título: cabezal comun a todas las clases (eclipse)
Publicado por: Tei en 21 de Febrero de 2008, 02:24:01 PM
Cita de: "ZüNdFoLGe"
Cita de: "Tei"Supongo que puedes hacer un script, que lo haga, concatenando el mismo fichero a todos tus ficheros.

algo asi como esto:

for $file ( @ficheros)  {
copy noseque.head+$file  out/$file
}

entiendo...pero creo que seria

cat $miClase $header > $miClase


pero tengo 2 dudas:
* como paso todas las clases como parametro
* desde donde corro el script

desde consola eso seria algo como:


copy clase1.java + header.java


a la clase1  se le concatena el contenido de header, al inicio. Habria que iterar (como tu pusiste) sobre todas las clases y ejecutarlo...el tema es como  :D

Puedes crear una lista ficheros:

ls -1 > listaficheros

luego puedes copipastear la lista en una variable

$ficheros = "bla.c
blabla2.c
blaglubla.c";

nota: hay formas mucho mejores

y convertilo a un array

@ficheros = split(/\n/,$ficheros);

luego lo recorres en un bucle


foreach $file ( @ficheros) {
 system( "cp head headtemp && cat $file >>headtemp && mv headtemp $file"); //pervert way to concatenate two files
}
nota: esto es pseudocodigo, no lo confudas con ningun lenguaje de programacion o de consola

En ms-dos creo que las concatenaciones deberian tener este aspecto:
copy header.java+clase1.java  clase1.java

Seguramente existe una forma elegante de hacer esto con un simple makefile, dado que make te da ya de por si de gratis el "haz tal operacion con todos los *.java".

No se si te he ayudado.  Creo que todo el mundo deberia saber un poco de [inserta aqui tu lenguaje de script favorito] para hacer esta clase de cosas.

¿Desde donde correr el script?  Si haces un buen script, sera recursivo, y te bastara con ejecutarlo en el directorio donde este el codigo fuente, y sus subdirectorios. Si el script es una caca, tendras que ejecutarlo en todos los directorios donde hay ficheros .java, con cuidado de no ejecutarlo dos veces. Para estas cosas es obvio que antes es ideal hacer una copia de seguridad por si acaso.
Título: cabezal comun a todas las clases (eclipse)
Publicado por: ZüNdFoLGe en 21 de Febrero de 2008, 02:31:39 PM
es buena idea... lo voy a probar  8)  grax!