加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何为SBT创建编译器操作

发布时间:2020-12-16 18:37:27 所属栏目:安全 来源:网络整理
导读:我想创建一个Action来自动化GCJ编译.从 I couldn’t make it work with Ant开始,我决定尝试SBT.文档说明了如何创建Action以及如何运行外部流程.我还没有看到如何重用java和scala编译器Actions存在的目录树遍历.在这种情况下,我的输入文件将是某个根文件夹下
我想创建一个Action来自动化GCJ编译.从 I couldn’t make it work with Ant开始,我决定尝试SBT.文档说明了如何创建Action以及如何运行外部流程.我还没有看到如何重用java和scala编译器Actions存在的目录树遍历.在这种情况下,我的输入文件将是某个根文件夹下的所有.class文件.我还需要为GCJ指定一个特定的类路径.任何指针也将受到赞赏.

解决方法

我根本没有使用过GCJ,而且我还是SBT的新手,但我相信你可以写一个快速的任务来完成你正在寻找的SBT 0.7.1.您可以使用 PathFinder来获取所有类文件,如下所示:

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

使用该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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读