This is a Java API for the fmi standard which is defined as a collection of C headers and xml descriptions.
- java 11
- Maven 3
- Cmake
- A working C and C++ compiler
apt install build-essential git cmake
brew install cmake
The API can be build using the following tools:
- Java 1.8
- Maven 3.6 >
- https://www.msys2.org/
- With package:
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
pacman -S mingw64/mingw-w64-x86_64-cmake
- Remember to add Java and Maven to
~/.bash_profile
PATH="$PATH:/c/Program Files/OpenJDK/jdk-8.0.262.10-hotspot/bin"
PATH="$PATH:/c/msys64/home/apache-maven-3.8.4/bin"
export PATH
- With package:
Build using c:\msys64\mingw64.exe
terminal
git clone [email protected]:INTO-CPS-Association/org.intocps.maestro.fmi.git
cd org.intocps.maestro.fmi
# The FMI headers and schemas are submodules
git submodules update --init
To build the project simply run maven package
with the profile make
to generate the native library for your
platform. If you dont have JAVA_HOME
and the includes required there set correctly you can set the environment
variable CI=1
(export CI=1
) to use the embedded headers.
mvn clean package -Pmake
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
This will compile the library both Java and native for the current platform
mvn clean package -Pmake
# to enable debugging symbols
mvn clean package -Pmake -Pnative_debug
The project is build on github actions with a cross compilation step where the native code is compiled on ubuntu, mac and windows and a final step packing these together into one java build make a single bundle that supports all platforms.
Add this dependency to your project (replace the version
with the latest release)
<dependency>
<groupId>org.into-cps.fmi</groupId>
<artifactId>jnifmuapi</artifactId>
<version>1.3.1</version>
</dependency>
The classes:
org.intocps.fmi.jnifmuapi
- fmi2 main factory- `org.intocps.fmi.jnifmuapi.fmi3 - fmi3 main interface without the zip
Simply trigger the Release new version
action.