我根本没有太多使用 GCJ,而且我对 SBT 还很陌生,但我相信您可以通过这种方式编写一个快速任务来准确地使用 SBT 0.7.1 完成您想要的任务。您可以使用PathFinder来获取所有类文件,如下所示:
val allClasses = (outputPath ##) ** "*.class"
Run Code Online (Sandbox Code Playgroud)
使用 PathFinder 和“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")
Run Code Online (Sandbox Code Playgroud)