2010-03-08 26 views
6

Soy bastante nuevo para Apache Ant y GCJ, y estoy teniendo dificultades para tratar de construir con GCJ a través de Ant.¿Cómo usar GCJ con Ant?

Mi aplicación está en Scala, así que necesito usar GCJ para tomar los archivos .class como fuente. No hay problema para compilar .scala a .class con Ant.

En primer lugar me di cuenta de cómo compilar manualmente un archivo .class a .o (objeto), de esta manera:

gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o 

veo here que soporta la compilación Ant GCJ través de la etiqueta javac. Así que pensé que esto debería funcionar:

<target name="gcjCompile" depends="compile"> 
    <mkdir dir="${object.dir}" /> 
    <javac srcdir="${build.dir}" 
      destdir="${object.dir}" 
      compiler="gcj" 
      executable="C:/gcc/gcc-4.3/bin/gcj.exe" 
      classpathref="gcjProject.classpath"> 
     <include name="**/*.class"/> 
    </javac> 
</target> 

Pero esta tarea javac no hace nada y no me da error. ¿Alguna pista? Gracias

+0

> Mi aplicación está en Scala, así que necesito usar > GCJ para tomar los archivos .class como fuente. Eso es un * non sequitur *. GCJ no es Java. No puedo recomendar que lo uses. Si debe tener una compilación nativa, existen productos actuales. – EJP

+0

¿Qué recomendarías? –

Respuesta

1

Parece que desea vincular su aplicación a un ejecutable nativo. Eso significa que ya compiló el código fuente en el código de byte JVM (como se las ha arreglado al compilar .scala en archivos .class). Tendrá que ejecutar el comando gcj manualmente usando la tarea <exec> para compilar el código de bytes en los archivos de código de objeto gcc.

Me gustaría recomendar algo como esto:

<property name="main.class" value="Main" /> 
<property name="class.dir" value="${basedir}/classes" /> 
<target name="compile"> 
    <mkdir dir="${class.dir}" /> 
    <javac srcdir="${build.dir}" 
     destdir="${class.dir}" 
     compiler="gcj" 
     executable="C:/gcc/gcc-4.3/bin/gcj.exe" 
     classpathref="gcjProject.classpath"> 
    <include name="**/*.java"/> 
    </javac> 
</target> 
<target name="link" depends="compile"> 
    <mkdir dir="${object.dir"} /> 
    <exec cmd="C:/gcc/gcc-4.3/bin/gcj.exe"> 
    <arg value="-classpath=${object.dir}" /> 
    <arg value="-c" /> 
    <arg value="*.class" /> 
    </exec> 
</target> 

Tenga en cuenta que es necesario definir las build.dir y object.dir propiedades, y puede que tenga que añadir una tarea depends antes de la javac en el objetivo de compilación (o simplemente recompilar desde cero cada vez). Es posible que haya pasado por alto muchas cosas, debe consultar las páginas del manual (para gcj, gcc y hormiga) si no funciona al principio.