Как использовать GCJ с Ant?
Я довольно новичок как в Apache Ant, так и в GCJ, и мне трудно работать с GCJ через Ant.
Мое приложение в Scala, поэтому мне нужно использовать GCJ для получения файлов.class в качестве источника. Нет проблем с компиляцией.scala в.class с Ant.
Сначала я выяснил, как вручную скомпилировать файл.class в.o (объект) следующим образом:
gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o
Я вижу здесь, что Ant поддерживает компиляцию GCJ через тег javac. Итак, я решил, что это должно работать:
<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>
Но эта задача javac ничего не делает, и я не получаю ошибок. Есть какие-нибудь подсказки? Спасибо
1 ответ
Похоже, вы хотите связать свое приложение с собственным исполняемым файлом. Это означает, что вы уже скомпилировали исходный код в байт-код JVM (как вы уже поняли, скомпилировав.scala в файлы.class). Вам нужно будет запустить gcj
Команда вручную с помощью <exec>
задача компилировать байт-код в файлы объектного кода gcc.
Я бы порекомендовал что-то вроде этого:
<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>
Имейте в виду, что вам нужно определить build.dir
а также object.dir
свойства, и вам может понадобиться добавить depends
задание перед javac в цели компиляции (или просто каждый раз перекомпилировать с нуля). Я, возможно, пропустил много вещей, вы должны проверить страницы справочника (для gcj, gcc и ant), если они сначала не работают.