I was working on a project that requires loading of native libraries, and so far, all development was restricted to Linux. In order to run
my project, I could simply enable forking and modify java.library.path
as follows:
javaOptions in run += "-Djava.library.path=some/common/path:lib/native/linux"
My question is: How can I do the same in a cross-platform way, so that I can share my build.sbt with a Windows-based developer. There are in particular three things that I couldn't figure out so far:
"dir1" / "dir2"
, but I'm not aware of a cross-platform way to join multiple paths (since it is :
on Linux and ;
on Windows). lib/native/linux
or lib/native/windows
dependent on the platform?java.library.path
-- is it possible to append instead?Since you can use any Scala code, you can of course do
val folderName =
if (System.getProperty("os.name").startsWith("Windows")) "windows" else "linux"
val libPath = Seq("some/common/path", s"lib/native/$folderName").mkString(java.io.File.pathSeparator)
javaOptions in run += s"-Djava.library.path=$libPath"
though this doesn't answer your last question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With