如何在sbt项目中使用jnaerator
How to use jnaerator in a sbt project
我在一个使用 c++ 代码的 Scala 项目上工作,使用 sbt。编译后,此 c++ 代码将通过使用 jna 的 Java 代码导入到 Scala 中。
现在,目前 Java 包装器是手动编写的,我喜欢将其自动化。我找到了可以做到这一点的 jnaerator,但我不知道我应该如何在 sbt 中使用它。
我看到两种通用方法:
- 使用命令行,例如
java -jar jnaerator ...
,但我不知道如何在 sbt 中设置这样的命令行任务?另外,我需要知道要遵循的典型项目结构:where to output the jna generated code?
- 如果可能的话,通过sbt使用jnaerator maven插件?
这可能需要一些迭代,直到我们让它满足您的需求。
对于第一种方法,这里介绍了如何在 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
现在的问题是您需要将这些文件文件放在哪里?最后,您想如何调用所有内容?
我在一个使用 c++ 代码的 Scala 项目上工作,使用 sbt。编译后,此 c++ 代码将通过使用 jna 的 Java 代码导入到 Scala 中。
现在,目前 Java 包装器是手动编写的,我喜欢将其自动化。我找到了可以做到这一点的 jnaerator,但我不知道我应该如何在 sbt 中使用它。
我看到两种通用方法:
- 使用命令行,例如
java -jar jnaerator ...
,但我不知道如何在 sbt 中设置这样的命令行任务?另外,我需要知道要遵循的典型项目结构:where to output the jna generated code? - 如果可能的话,通过sbt使用jnaerator maven插件?
这可能需要一些迭代,直到我们让它满足您的需求。
对于第一种方法,这里介绍了如何在 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
现在的问题是您需要将这些文件文件放在哪里?最后,您想如何调用所有内容?