我想创建一个动作来自动GCJ编译。由于我不能使它与蚂蚁的工作,我决定尝试SBT 。文档说如何创建一个行动以及如何运行外部进程。我还没有看到的是如何再利用目录树的遍历它存在于Java和Scala编译器操作。在这种情况下我的输入文件将是一个特定的根文件夹下的所有.class文件。我还需要指定GCJ特定的类路径。此任何指针将太理解。

有帮助吗?

解决方案

我没有用过GCJ多少都和我还是很新的SBT,但是这是我怎么相信你可以写一个快速的任务做你正在寻找什么用SBT 0.7.1。您可以使用路径查找器抓住所有的类文件像这样:

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