0

我使用 sbt 处理使用 c++ 代码的 Scala 项目。编译后,此 c++ 代码通过使用 jna 的 Java 代码导入 Scala。

现在,目前 Java 包装器是手动编写的,我喜欢将其自动化。我找到了可以做到这一点的 jnaerator,但我不知道我应该如何在 sbt 中使用它。

我看到两种一般方法:

  1. 使用命令行,例如,java -jar jnaerator ...但我不知道如何在 sbt 中设置这样的命令行任务?另外,我需要知道要遵循的典型项目结构:在哪里输出 jna 生成的代码?
  2. 如果可能的话,通过 sbt 使用 jnaerator maven 插件?
4

1 回答 1

1

这可能需要一些迭代,直到我们让它做你需要的。

对于第一种方法,这里是您如何在 sbt 上运行自定义系统命令(您基本上使用 Scala 代码解决了这个问题)。将以下内容添加到您的build.sbt文件中:

lazy val runJnaerator= taskKey[Unit]("This task generates libraries from native code")

runJnaerator := {
    import sys.process._
    Seq("java" , "-jar", "jnaerator", "..." ).!
}

执行:

>sbt runJnaerator

现在的问题是您需要将这些文件文件放在哪里?最后,你想如何调用一切?

于 2015-06-10T15:39:36.290 回答