cmake/docs/java.md
| Linux | macOS | Windows |
|---|---|---|
First, verify you have the JAVA_HOME environment variable set otherwise CMake
and Maven won't be able to find your Java SDK.
To build the java maven packages, simply run:
cmake -S. -Bbuild -DBUILD_JAVA=ON
cmake --build build --target java_package -v
note: Since java_package is in target all, you can also omit the
--target option.
To list tests:
cd build
ctest -N
To only run Java tests:
cd build
ctest -R "java_.*"
First you should take a look at the
ortools/java/README.md to understand the layout.
Here I will only focus on the CMake/SWIG tips and tricks.
Since Java use the directory layout and we want to use the CMAKE_BINARY_DIR to generate the Java binary package.
We want this layout:
<CMAKE_BINARY_DIR>/java
├── ortools-linux-x86-64
│ ├── pom.xml
│ └── src/main/resources
│ └── linux-x86-64
│ ├── libjniortools.so
│ └── libortools.so
├── ortools-java
│ ├── pom.xml
│ └── src/main/java
│ └── com/google/ortools
│ ├── Loader.java
│ ├── linearsolver
│ │ ├── LinearSolver.java
│ │ └── ...
│ ├── constraintsolver
│ │ ├── ConstraintSolver.java
│ │ └── ...
│ ├── ...
│ └── sat
│ ├── CpModel.java
│ └── ...
├── constraint_solver
│ └── Tsp
│ ├── pom.xml
│ └── src/main/java
│ └── com/google/ortools
│ └── Tsp.java
src: tree build/java --prune -U -P "*.java|*.xml|*.so*" -I "target"
You can use CMAKE_SWIG_DIR to change the output directory for the .java file
e.g.:
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/..)
And you can use CMAKE_LIBRARY_OUTPUT_DIRECTORY to change the output directory
for the .so file e.g.:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)
[optional]You can use SWIG_OUTFILE_DIR to change the output directory for the
.cxx file e.g.:
set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)
Then you only need to create a pom.xml file in build/java to be able to use
the build directory to generate the Java package.