2010-03-08 8 views
6

아파치 앤트와 GCJ 모두에 대해 상당히 익숙합니다. 앤트를 통해 GCJ로 빌드하는 데 어려움을 겪고 있습니다.GCJ를 Ant와 함께 사용하는 방법?

내 앱이 스칼라에 있으므로 GCJ를 사용하여 .class 파일을 소스로 가져와야합니다. Ant로 .class와 .class를 컴파일하는 데 아무런 문제가 없습니다.

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

내가 here를 볼 수 개미는 javac의 태그를 통해 GCJ 편집을 지원합니다

먼저 내가 수동으로 .O하기 (객체)가 된 .class 파일을 컴파일하는 방법이 방법을 알아 냈어. 그래서이 작동합니다 생각 :

<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의 작업은 아무것도하지 않고 내가 오류를 얻을 수 없습니다. 모든 단서? 감사합니다.

+0

> 내 앱이 스칼라에 있으므로 > GCJ를 사용하여 .class 파일을 소스로 가져와야합니다. 그게 * 아닌 sequitur *. GCJ는 Java가 아닙니다. 나는 그것을 사용하는 것이 좋습니다 수 없습니다. 네이티브 컴파일이 필요하다면 현재의 제품이 있습니다. – EJP

+0

추천 할만한 제품이 있습니까? –

답변

1

앱을 기본 실행 파일에 연결하려는 것처럼 들립니다. 이것은 이미 소스 코드를 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.dirobject.dir 속성을 정의해야합니다, 당신은 컴파일 대상에서 javac의 전에 depends 작업을 추가해야 할 수도 있습니다 (또는 처음부터 다시 컴파일 할 때마다). 나는 많은 것들을 놓쳤을지도 모른다. 처음에는 작동하지 않으면 매뉴얼 페이지 (gcj, gcc, ant)를 점검해야한다.

관련 문제