xpress tests gracefully exit if Xpress not found
This commit is contained in:
1
.github/workflows/centos.yml
vendored
1
.github/workflows/centos.yml
vendored
@@ -87,7 +87,6 @@ jobs:
|
||||
-DBUILD_JAVA=${{ matrix.java }} \
|
||||
-DBUILD_DOTNET=${{ matrix.dotnet }} \
|
||||
-DBUILD_EXAMPLES=ON \
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON \
|
||||
-DBUILD_DEPS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="build/install" \
|
||||
-DBUILD_SAMPLES=OFF \
|
||||
|
||||
1
.github/workflows/oracle.yml
vendored
1
.github/workflows/oracle.yml
vendored
@@ -113,7 +113,6 @@ jobs:
|
||||
-DBUILD_JAVA=${{ matrix.cmake.java }} \
|
||||
-DBUILD_DOTNET=${{ matrix.cmake.dotnet }} \
|
||||
-DBUILD_EXAMPLES=ON \
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON \
|
||||
-DBUILD_DEPS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="build/install" \
|
||||
-DBUILD_SAMPLES=OFF \
|
||||
|
||||
1
.github/workflows/ubuntu.yml
vendored
1
.github/workflows/ubuntu.yml
vendored
@@ -87,7 +87,6 @@ jobs:
|
||||
-DBUILD_EXAMPLES=ON
|
||||
-DBUILD_DEPS=ON
|
||||
-DBUILD_SAMPLES=OFF
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON
|
||||
-DCMAKE_INSTALL_PREFIX="build/install"
|
||||
|
||||
- name: Build OR-Tools Linux
|
||||
|
||||
1
.github/workflows/windows-cpp.yml
vendored
1
.github/workflows/windows-cpp.yml
vendored
@@ -44,7 +44,6 @@ jobs:
|
||||
run: >
|
||||
cmake -S. -Bbuild
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON
|
||||
-DBUILD_DEPS=ON
|
||||
-DCMAKE_INSTALL_PREFIX="install"
|
||||
-DBUILD_FLATZINC=OFF
|
||||
|
||||
1
.github/workflows/windows-java-dotnet.yml
vendored
1
.github/workflows/windows-java-dotnet.yml
vendored
@@ -62,7 +62,6 @@ jobs:
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DBUILD_JAVA=ON
|
||||
-DBUILD_DOTNET=ON
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON
|
||||
-DBUILD_CXX_SAMPLES=OFF
|
||||
-DBUILD_SAMPLES=OFF
|
||||
-DCMAKE_INSTALL_PREFIX="install"
|
||||
|
||||
1
.github/workflows/windows-python.yml
vendored
1
.github/workflows/windows-python.yml
vendored
@@ -72,7 +72,6 @@ jobs:
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DBUILD_CXX_SAMPLES=OFF
|
||||
-DBUILD_PYTHON=ON
|
||||
-DBUILD_XPRESS_TEST_AND_EXAMPLES=ON
|
||||
-DBUILD_SAMPLES=OFF
|
||||
-DBUILD_FLATZINC=OFF
|
||||
|
||||
|
||||
@@ -281,7 +281,6 @@ message(STATUS "CPLEX support: ${USE_CPLEX}")
|
||||
## XPRESS
|
||||
# Since it is dynamicaly loaded upon use, OFF is currently not supported.
|
||||
CMAKE_DEPENDENT_OPTION(USE_XPRESS "Use the Xpress solver" ON "BUILD_CXX" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_XPRESS_TEST_AND_EXAMPLES "Build Xpress-specific tests" OFF "USE_XPRESS" OFF)
|
||||
|
||||
# Language specific options
|
||||
if(BUILD_CXX)
|
||||
@@ -439,6 +438,3 @@ endforeach()
|
||||
|
||||
# Add tests in examples/tests
|
||||
add_subdirectory(examples/tests)
|
||||
|
||||
# Add Xpress specific tests
|
||||
add_subdirectory(examples/xpress_tests)
|
||||
|
||||
154
cmake/README.md
154
cmake/README.md
@@ -172,84 +172,82 @@ Following is a list of available options, for the full list run:
|
||||
cmake -S. -Bbuild -LH
|
||||
```
|
||||
|
||||
| CMake Option | Default Value | Note |
|
||||
|:-------------|:----------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `CMAKE_BUILD_TYPE` | Release | see CMake documentation [here](https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html) |
|
||||
| `BUILD_CXX` | ON | Build C++ |
|
||||
| `BUILD_DOTNET` | OFF | Build .Net wrapper and packages |
|
||||
| `BUILD_JAVA` | OFF | Build Java wrapper and packages |
|
||||
| `BUILD_PYTHON` | OFF | Build Python wrapper and package |
|
||||
| | | |
|
||||
| `BUILD_FLATZINC` | ON\* | Build the flatzinc library<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_GLOP` | OFF\* | Build the standalone Glop library<br>**Forced** to OFF if `BUILD_CXX=ON`, otherwise default to ON |
|
||||
| | | |
|
||||
| `BUILD_DEPS` | OFF* | Default to ON if `BUILD_JAVA=ON` or `BUILD_PYTHON=ON` or `BUILD_DOTNET=ON` |
|
||||
| `BUILD_ZLIB` | OFF* | Static build the zlib library<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_absl` | OFF* | Static build the abseil-cpp libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_Protobuf` | OFF* | Static build the protobuf libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_re2` | OFF* | Static build the re2 libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_Eigen3` | OFF* | Static build the Eigen3 libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_COINOR` | ON\* | Enable Coin-OR support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_CoinUtils` | OFF\* | Static build the CoinUtils library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Osi` | OFF\* | Static build the Osi library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Clp` | OFF\* | Static build the Clp library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Cgl` | OFF\* | Static build the Cgl library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Cbc` | OFF\* | Static build the Cbc library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_GLPK` | OFF\* | Enable GLPK support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_GLPK` | OFF\* | Static build the GLPK libraries<br>**Forced** to ON if `USE_GLPK=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_HIGHS` | ON\* | Enable HIGHS support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_HIGHS` | OFF\* | Static build the HiGHS libraries<br>**Forced** to ON if `USE_HIGHS=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_SCIP` | ON\* | Enable SCIP support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_SCIP` | OFF\* | Static build the SCIP libraries<br>**Forced** to ON if `USE_SCIP=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_CPLEX` | OFF | Enable CPLEX support |
|
||||
| | | |
|
||||
| `BUILD_DOC` | OFF\* | Build all documentations |
|
||||
| `BUILD_CXX_DOC` | OFF\* | Build C++ documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_DOTNET_DOC` | OFF\* | Build .Net documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_JAVA_DOC` | OFF\* | Build Java documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_PYTHON_DOC` | OFF\* | Build Python documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `INSTALL_DOC` | OFF\* | Install all documentations<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_DOC=OFF` |
|
||||
| | | |
|
||||
| `BUILD_SAMPLES` | ON\* | Build all samples<br>Default to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_CXX_SAMPLES` | ON\* | Build all C++ samples<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_DOTNET_SAMPLES` | ON\* | Build all .Net samples<br>**Forced** to OFF if `BUILD_DOTNET=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_JAVA_SAMPLES` | ON\* | Build all Java samples<br>**Forced** to OFF if `BUILD_JAVA=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_PYTHON_SAMPLES` | ON\* | Build all Python samples<br>**Forced** to OFF if `BUILD_PYTHON=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| | | |
|
||||
| `BUILD_EXAMPLES` | ON\* | Build all examples<br>Default to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_CXX_EXAMPLES` | ON\* | Build all C++ examples<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_DOTNET_EXAMPLES` | ON\* | Build all .Net examples<br>**Forced** to OFF if `BUILD_DOTNET=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_JAVA_EXAMPLES` | ON\* | Build all Java examples<br>**Forced** to OFF if `BUILD_JAVA=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_PYTHON_EXAMPLES` | ON\* | Build all Python examples<br>**Forced** to OFF if `BUILD_PYTHON=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| | | |
|
||||
| `BUILD_XPRESS_TEST_AND_EXAMPLES` | OFF\* | Build Xpress specific tests (C++, Java and Python) <br>tests and example for each language are built **only** if the respective language support is `ON` <br>These tests and examples don't need Xpress for the compilation but they need a valid Xpress installation for a succesful execution (a cummunity licence is sufficient). |
|
||||
| | | |
|
||||
| `USE_DOTNET_46` | OFF | Enable .Net Framework 4.6 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_461` | OFF | Enable .Net Framework 4.6.1 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_462` | OFF | Enable .Net Framework 4.6.2 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_48` | OFF | Enable .Net Framework 4.8 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_STD_21` | OFF | Enable .Net Standard 2.1 support<br>Only available if `BUILD_DOTNET=ON` and not targeting arm64 platform |
|
||||
| `USE_DOTNET_CORE_31` | OFF | Enable .Net Core 3.1 LTS support<br>Only available if `BUILD_DOTNET=ON` and not targeting arm64 platform |
|
||||
| `USE_DOTNET_6` | ON | Enable .Net 6 LTS support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_7` | OFF | Enable .Net 7 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `UNIVERSAL_DOTNET_PACKAGE` | OFF | Build a multi platform package (i.e. `Google.OrTools` will depends on all runtime packages)<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| | | |
|
||||
| `SKIP_GPG` | ON | Disable GPG sign<br>Only available if `BUILD_JAVA=ON` |
|
||||
| `UNIVERSAL_JAVA_PACKAGE` | OFF | Build a multi platform package (i.e. `ortools-java` will depends on all native packages)<br>Only available if `BUILD_JAVA=ON` |
|
||||
| `BUILD_FAT_JAR` | OFF | Build a `ortools-java` .jar that includes all of its own Maven dependencies, including the native package<br>Only available if `BUILD_JAVA=ON` |
|
||||
| | | |
|
||||
| `BUILD_pybind11` | `BUILD_DEPS` | Static build the pybind11 libraries<br>**Forced** to ON if `BUILD_DEPS=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `BUILD_pybind11_protobuf` | `BUILD_DEPS` | Static build the pybind11_protobuf libraries<br>**Forced** to ON if `BUILD_DEPS=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `GENERATE_PYTHON_STUB` | ON | Generate python stub files<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `BUILD_VENV` | `BUILD_TESTING` | Create python venv in `BINARY_DIR/python/venv`<br>**Forced** to ON if `BUILD_TESTING=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `VENV_USE_SYSTEM_SITE_PACKAGES` | OFF | Python venv can use system site package (e.g. `py3-numpy` on Alpine)<br>Only available if `BUILD_PYTHON=ON` and `BUILD_VENV=ON` |
|
||||
| `FETCH_PYTHON_DEPS` | `BUILD_DEPS` | Fetch python modules needed to build ortools package<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| | | |
|
||||
| CMake Option | Default Value | Note |
|
||||
|:-------------|:--------------|:-----|
|
||||
| `CMAKE_BUILD_TYPE` | Release | see CMake documentation [here](https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html) |
|
||||
| `BUILD_CXX` | ON | Build C++ |
|
||||
| `BUILD_DOTNET` | OFF | Build .Net wrapper and packages |
|
||||
| `BUILD_JAVA` | OFF | Build Java wrapper and packages |
|
||||
| `BUILD_PYTHON` | OFF | Build Python wrapper and package |
|
||||
| | | |
|
||||
| `BUILD_FLATZINC` | ON\* | Build the flatzinc library<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_GLOP` | OFF\* | Build the standalone Glop library<br>**Forced** to OFF if `BUILD_CXX=ON`, otherwise default to ON |
|
||||
| | | |
|
||||
| `BUILD_DEPS` | OFF* | Default to ON if `BUILD_JAVA=ON` or `BUILD_PYTHON=ON` or `BUILD_DOTNET=ON` |
|
||||
| `BUILD_ZLIB` | OFF* | Static build the zlib library<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_absl` | OFF* | Static build the abseil-cpp libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_Protobuf` | OFF* | Static build the protobuf libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_re2` | OFF* | Static build the re2 libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_Eigen3` | OFF* | Static build the Eigen3 libraries<br>**Forced** to ON if `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_COINOR` | ON\* | Enable Coin-OR support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_CoinUtils` | OFF\* | Static build the CoinUtils library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Osi` | OFF\* | Static build the Osi library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Clp` | OFF\* | Static build the Clp library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Cgl` | OFF\* | Static build the Cgl library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| `BUILD_Cbc` | OFF\* | Static build the Cbc library<br>**Forced** to ON if `USE_COINOR=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_GLPK` | OFF\* | Enable GLPK support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_GLPK` | OFF\* | Static build the GLPK libraries<br>**Forced** to ON if `USE_GLPK=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_HIGHS` | ON\* | Enable HIGHS support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_HIGHS` | OFF\* | Static build the HiGHS libraries<br>**Forced** to ON if `USE_HIGHS=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_SCIP` | ON\* | Enable SCIP support<br>**Forced** to OFF if `BUILD_CXX=OFF` |
|
||||
| `BUILD_SCIP` | OFF\* | Static build the SCIP libraries<br>**Forced** to ON if `USE_SCIP=ON` **and** `BUILD_DEPS=ON` |
|
||||
| | | |
|
||||
| `USE_CPLEX` | OFF | Enable CPLEX support |
|
||||
| | | |
|
||||
| `BUILD_DOC` | OFF\* | Build all documentations |
|
||||
| `BUILD_CXX_DOC` | OFF\* | Build C++ documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_DOTNET_DOC` | OFF\* | Build .Net documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_JAVA_DOC` | OFF\* | Build Java documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `BUILD_PYTHON_DOC` | OFF\* | Build Python documentation<br>**Forced** to ON if `BUILD_DOC=ON` |
|
||||
| `INSTALL_DOC` | OFF\* | Install all documentations<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_DOC=OFF` |
|
||||
| | | |
|
||||
| `BUILD_SAMPLES` | ON\* | Build all samples<br>Default to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_CXX_SAMPLES` | ON\* | Build all C++ samples<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_DOTNET_SAMPLES` | ON\* | Build all .Net samples<br>**Forced** to OFF if `BUILD_DOTNET=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_JAVA_SAMPLES` | ON\* | Build all Java samples<br>**Forced** to OFF if `BUILD_JAVA=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_PYTHON_SAMPLES` | ON\* | Build all Python samples<br>**Forced** to OFF if `BUILD_PYTHON=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| | | |
|
||||
| `BUILD_EXAMPLES` | ON\* | Build all examples<br>Default to ON if `BUILD_DEPS=ON` |
|
||||
| `BUILD_CXX_EXAMPLES` | ON\* | Build all C++ examples<br>**Forced** to OFF if `BUILD_CXX=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_DOTNET_EXAMPLES` | ON\* | Build all .Net examples<br>**Forced** to OFF if `BUILD_DOTNET=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_JAVA_EXAMPLES` | ON\* | Build all Java examples<br>**Forced** to OFF if `BUILD_JAVA=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| `BUILD_PYTHON_EXAMPLES` | ON\* | Build all Python examples<br>**Forced** to OFF if `BUILD_PYTHON=OFF` or `BUILD_SAMPLE=OFF` |
|
||||
| | | |
|
||||
| `USE_DOTNET_46` | OFF | Enable .Net Framework 4.6 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_461` | OFF | Enable .Net Framework 4.6.1 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_462` | OFF | Enable .Net Framework 4.6.2 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_48` | OFF | Enable .Net Framework 4.8 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_STD_21` | OFF | Enable .Net Standard 2.1 support<br>Only available if `BUILD_DOTNET=ON` and not targeting arm64 platform |
|
||||
| `USE_DOTNET_CORE_31` | OFF | Enable .Net Core 3.1 LTS support<br>Only available if `BUILD_DOTNET=ON` and not targeting arm64 platform |
|
||||
| `USE_DOTNET_6` | ON | Enable .Net 6 LTS support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `USE_DOTNET_7` | OFF | Enable .Net 7 support<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| `UNIVERSAL_DOTNET_PACKAGE` | OFF | Build a multi platform package (i.e. `Google.OrTools` will depends on all runtime packages)<br>Only available if `BUILD_DOTNET=ON` |
|
||||
| | | |
|
||||
| `SKIP_GPG` | ON | Disable GPG sign<br>Only available if `BUILD_JAVA=ON` |
|
||||
| `UNIVERSAL_JAVA_PACKAGE` | OFF | Build a multi platform package (i.e. `ortools-java` will depends on all native packages)<br>Only available if `BUILD_JAVA=ON` |
|
||||
| `BUILD_FAT_JAR` | OFF | Build a `ortools-java` .jar that includes all of its own Maven dependencies, including the native package<br>Only available if `BUILD_JAVA=ON` |
|
||||
| | | |
|
||||
| `BUILD_pybind11` | `BUILD_DEPS` | Static build the pybind11 libraries<br>**Forced** to ON if `BUILD_DEPS=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `BUILD_pybind11_protobuf` | `BUILD_DEPS` | Static build the pybind11_protobuf libraries<br>**Forced** to ON if `BUILD_DEPS=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `GENERATE_PYTHON_STUB` | ON | Generate python stub files<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `BUILD_VENV` | `BUILD_TESTING` | Create python venv in `BINARY_DIR/python/venv`<br>**Forced** to ON if `BUILD_TESTING=ON`<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| `VENV_USE_SYSTEM_SITE_PACKAGES` | OFF | Python venv can use system site package (e.g. `py3-numpy` on Alpine)<br>Only available if `BUILD_PYTHON=ON` and `BUILD_VENV=ON` |
|
||||
| `FETCH_PYTHON_DEPS` | `BUILD_DEPS` | Fetch python modules needed to build ortools package<br>Only available if `BUILD_PYTHON=ON` |
|
||||
| | | |
|
||||
|
||||
## Integrating OR-Tools in your CMake Project
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ void RunAllExamples() {
|
||||
RunIntegerProgrammingExample("GUROBI");
|
||||
RunIntegerProgrammingExample("GLPK");
|
||||
RunIntegerProgrammingExample("CPLEX");
|
||||
RunIntegerProgrammingExample("XPRESS");
|
||||
}
|
||||
} // namespace operations_research
|
||||
|
||||
|
||||
@@ -50,7 +50,8 @@ void useXpressSolver(bool solveAsMip, bool useFactory) {
|
||||
}
|
||||
}
|
||||
if (solver == nullptr) {
|
||||
LOG(FATAL) << "Xpress solver is not available";
|
||||
LOG(WARNING) << "Xpress solver is not available";
|
||||
return;
|
||||
}
|
||||
// Use the solver
|
||||
/*
|
||||
@@ -1,28 +0,0 @@
|
||||
if (NOT BUILD_XPRESS_TEST_AND_EXAMPLES)
|
||||
return()
|
||||
endif ()
|
||||
|
||||
if (BUILD_CXX_EXAMPLES)
|
||||
add_cxx_example(${CMAKE_CURRENT_SOURCE_DIR}/xpress_use.cc)
|
||||
endif ()
|
||||
|
||||
# disable python callback test
|
||||
#if (BUILD_PYTHON_EXAMPLES)
|
||||
# add_python_example(${CMAKE_CURRENT_SOURCE_DIR}/callback_xpress.py)
|
||||
#endif ()
|
||||
|
||||
include(CTest)
|
||||
if (BUILD_CXX_EXAMPLES)
|
||||
if (APPLE)
|
||||
set(CMAKE_INSTALL_RPATH
|
||||
"@loader_path/../${CMAKE_INSTALL_LIBDIR};@loader_path")
|
||||
elseif (UNIX)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:$ORIGIN:$ORIGIN/../lib:$ORIGIN")
|
||||
endif ()
|
||||
|
||||
add_executable(test_xprs_interface test/test_xpress_interface.cc)
|
||||
target_compile_features(test_xprs_interface PRIVATE cxx_std_17)
|
||||
target_link_libraries(test_xprs_interface PRIVATE ortools::ortools GTest::gtest_main)
|
||||
|
||||
add_test(NAME cxx_unittests_xpress_interface COMMAND test_xprs_interface)
|
||||
endif ()
|
||||
@@ -16,6 +16,7 @@ list(REMOVE_ITEM _SRCS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/solve.cc
|
||||
)
|
||||
list(FILTER _SRCS EXCLUDE REGEX "/model_exporter_main\\.cc")
|
||||
list(FILTER _SRCS EXCLUDE REGEX ".*/.*_test.cc")
|
||||
if(USE_SCIP)
|
||||
list(APPEND _SRCS ${LPI_GLOP_SRC})
|
||||
endif()
|
||||
@@ -67,3 +68,18 @@ elseif(UNIX)
|
||||
endif()
|
||||
|
||||
install(TARGETS solve)
|
||||
|
||||
if (BUILD_CXX_EXAMPLES)
|
||||
if (APPLE)
|
||||
set(CMAKE_INSTALL_RPATH
|
||||
"@loader_path/../${CMAKE_INSTALL_LIBDIR};@loader_path")
|
||||
elseif (UNIX)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:$ORIGIN:$ORIGIN/../lib:$ORIGIN")
|
||||
endif ()
|
||||
|
||||
add_executable(test_xprs_interface xpress_interface_test.cc)
|
||||
target_compile_features(test_xprs_interface PRIVATE cxx_std_17)
|
||||
target_link_libraries(test_xprs_interface PRIVATE ortools::ortools GTest::gtest_main)
|
||||
|
||||
add_test(NAME cxx_unittests_xpress_interface COMMAND test_xprs_interface)
|
||||
endif ()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <filesystem>
|
||||
#include <fstream>
|
||||
#include <locale>
|
||||
|
||||
@@ -652,14 +653,17 @@ TEST(XpressInterface, Write) {
|
||||
obj->SetCoefficient(x1, 1);
|
||||
obj->SetCoefficient(x2, 2);
|
||||
|
||||
std::string tmpName = std::string(std::tmpnam(nullptr)) + ".mps";
|
||||
const std::filesystem::path temporary_working_dir =
|
||||
std::filesystem::temp_directory_path() / "temporary_working_dir";
|
||||
std::filesystem::create_directories(temporary_working_dir);
|
||||
|
||||
std::string tmpName = temporary_working_dir / "dummy.mps";
|
||||
solver.Write(tmpName);
|
||||
|
||||
std::ifstream tmpFile(tmpName);
|
||||
std::stringstream tmpBuffer;
|
||||
tmpBuffer << tmpFile.rdbuf();
|
||||
tmpFile.close();
|
||||
std::remove(tmpName.c_str());
|
||||
std::filesystem::remove_all(temporary_working_dir);
|
||||
|
||||
EXPECT_EQ(tmpBuffer.str(), R"(NAME newProb
|
||||
OBJSENSE MAXIMIZE
|
||||
@@ -1305,5 +1309,12 @@ int main(int argc, char** argv) {
|
||||
InitGoogle(argv[0], &argc, &argv, true);
|
||||
absl::SetFlag(&FLAGS_logtostderr, 1);
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
auto solver = operations_research::MPSolver::CreateSolver("XPRESS_LP");
|
||||
if (solver == nullptr) {
|
||||
LOG(ERROR) << "Xpress solver is not available";
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
else{
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -340,7 +340,7 @@ bool initXpressEnv(bool verbose, int xpress_oem_license_key) {
|
||||
}
|
||||
}
|
||||
void log_full_license_error(int code, const std::string& xpress_lib_dir) {
|
||||
LOG(ERROR) << "XpressInterface: Xpress found at " << xpress_lib_dir
|
||||
LOG(WARNING) << "XpressInterface: Xpress found at " << xpress_lib_dir
|
||||
<< "\n";
|
||||
char errmsg[256];
|
||||
XPRSgetlicerrmsg(errmsg, 256);
|
||||
|
||||
Reference in New Issue
Block a user