Что является лучшей идеей для следующего:
У меня есть библиотека Scala, которая работает на BSD (MacOS X, FreeBSD) / Linux / Windows через вызовы функций JNI, и прежде чем я вызову некоторую функцию @native, мне нужно загрузить библиотеку JNI, т.е. .so, .dylib, .dll
структура проекта:
/ common (код Scala)
/ windows (Cкод и привязка класса Scala)
/ macos (код C и привязка класса Scala)
/ linux (привязка кода C и класса Scala)
текущее простое решение (для MacOSX и если установлен gcc):
(Process(s"cd c_native_path_src") ### Process(s"gcc -dynamiclib -O3 " +
"-I/System/Library/Frameworks/JavaVM.framework/Headers " +
"-I/usr/include " +
"-I$JAVA_HOME/include " +
s"-I$$JAVA_HOME/include/darwin" +
s"$some_path/src/lib_native_util.c " +
s"-o $some_path/$libPath/$libName$.dylib"))
, что является лучшим решением?я пробовал CMake, но ничего не помогло, к сожалению
кстати, еще один вопрос: если у меня есть заголовок для файла класса Scala / Java, который я уже сгенерировал, будет ли он работать на других платформах?например, если я уже сгенерировал заголовок для своего класса Scala (он был в BSD / MacOS), будет ли он работать в Windows / Linux при компиляции исходного кода C для @native функций?