我是Apache Ant和GCJ的新手,我很难尝试通过Ant使用GCJ进行构建。
我的应用是Scala的,所以我需要使用GCJ来获取.class文件作为源文件。用Ant将.scala编译成.class是没有问题的。
首先,我了解了如何手动将.class文件编译为.o (object),如下所示:
gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o我看到here通过javac标记支持GCJ编译。所以我想这应该行得通:
<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任务什么也不做,我没有得到任何错误。有什么线索吗?谢谢
发布于 2011-01-17 21:04:52
听起来你想把你的应用链接到本机可执行文件中。这意味着您已经将源代码编译成了JVM字节码(正如您已经通过将.scala编译成.class文件所做的那样)。您将需要使用<exec>任务手动运行gcj命令,将字节码编译成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属性,并且可能需要在编译目标中的javac之前添加depends任务(或者每次都从头开始重新编译)。我可能遗漏了很多东西,如果一开始不能工作,你应该检查手册页面(对于gcj,gcc和ant)。
https://stackoverflow.com/questions/2404763
复制相似问题