문제

GCJ 컴파일을 자동화하는 작업을 만들고 싶습니다. 부터 나는 그것을 개미와 함께 작동시킬 수 없었다, 나는 SBT를 시도하기로 결정했다. 문서는 작업을 만드는 방법과 외부 프로세스를 실행하는 방법을 말합니다. 내가 아직 보지 못하는 것은 Java 및 Scala 컴파일러 동작에 존재하는 디렉토리 트리 트래버스를 재사용하는 방법입니다. 이 경우 내 입력 파일은 특정 루트 폴더의 모든 .class 파일입니다. 또한 GCJ에 대한 특정 클래스 경로를 지정해야합니다. 이것에 대한 모든 포인터도 감사 할 것입니다.

도움이 되었습니까?

해결책

나는 GCJ를 전혀 사용하지 않았고 SBT에서 여전히 새롭지 만 SBT 0.7.1로 원하는 것을 정확하게 수행하기 위해 빠른 작업을 작성할 수 있다고 생각하는 방법입니다. 당신은 a를 사용할 수 있습니다 패스 파인더 SO와 같은 모든 클래스 파일을 가져 오려면 다음과 같습니다.

val allClasses = (outputPath ##) ** "*.class"

해당 패스 파인더와 "CompileClassPath"최상위 메소드를 사용하면 현재 프로젝트의 클래스 경로를 사용하여 GCJ를 실행하고 모든 .class 파일을 하나의 gcjfile로 구성하는 작업과 같은 작업을 구성 할 수 있습니다.

val gcj = "/usr/local/bin/gcj"
val gcjFile = "target/my_executable.o"

val allClasses = (outputPath ##) ** "*.class"

lazy val gcjCompile = execTask {
  <x>{gcj} --classpath={compileClasspath.get.map(_.absolutePath).mkString(":")}  -c {allClasses.get.map(_.absolutePath).mkString("-c ")} -o {gcjFile}</x>
} dependsOn(compile) describedAs("Create a GCJ executable object")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top