Я работаю над проектом Scala, который использует код c ++, используя sbt. После компиляции этот код c ++ импортируется в Scala через код Java, который использует jna.
Теперь в настоящее время Java-оболочка написана вручную, и мне нравится это автоматизировать. Я нашел jnaerator, который может это сделать, но я не знаю, как мне использовать его в sbt.
Я вижу два общих подхода:
java -jar jnaerator ...
но я не знаю, как настроить такую задачу командной строки в SBT? Кроме того, мне нужно знать типичную структуру проекта, чтобы следовать: где вывести сгенерированный jna код?Это может занять некоторое время, пока мы не сделаем то, что вам нужно.
Для первого подхода, вот как вы можете запустить пользовательскую системную команду на 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
Теперь вопрос в том, куда вам нужны эти файлы, чтобы файлы? И наконец, как вы хотите призвать все?