SBT - 在SBT中调用GCC调用失败,但在我手动执行它时则不会

时间:2015-08-09 15:16:23

标签: c scala gcc sbt

我正在开发一个库,该库将与Scala的Raspberry PI上的I2C总线通信。为此,我需要一些JNI代码,它将与设备上的操作系统中断。

我尝试为此制作一个构建文件,现在看起来像这样:

name := "core"

organization := "nl.fizzylogic.reactivepi"

scalaVersion := "2.11.6"



val nativeClasses = List(
  "nl.fizzylogic.reactivepi.i2c.I2CDevice"
)

val nativeDeviceSources = List(
  "src/jni/nl_fizzylogic_reativepi_i2c_I2CDevice.c"
)

val nativeGenerateHeaders = taskKey[Int]("Generates JNI headers for the library")
val nativeCompile = taskKey[Int]("Compiles the native library")

nativeGenerateHeaders := {
  ("javah -classpath target/scala-2.11/classes -d src/jni " + nativeClasses.mkString(" ")) !
}

nativeCompile := {
  ("gcc -Wl -add-stdcall-alias -I$JAVA_HOME/include -I$JAVA_HOME/include/darwin -I$JAVA_HOME/include/linux -shared -o target/reactivepi.so " + nativeDeviceSources.mkString(" ")) !
}

到目前为止,javah调用已成功。但是当我调用nativeCompile任务时,GCC告诉我它无法找到jni.h文件。但是,当我将命令从构建文件复制并粘贴到终端并执行它时,它会成功。

当我从自定义构建任务执行gcc时,它似乎没有拾取包含路径。但我不知道我在这里做错了什么。

0 个答案:

没有答案