Clp-src
Clp-src crate is a *-src crate. This links Clp libraries to executable build by cargo, but does not provide Rust bindings. Clp is built with CoinUtils (CoinUtils-src), Osi (Osi-src)(Optional).
By this package, you don't need to worry about installing Clp in the system, and it's a package for multi-platforms.
Clp (Coin-or linear programming) is an open-source linear programming solver. It is primarily meant to be used as a callable library, but a basic, stand-alone executable version is also available.
Usage
-
add the following to your
Cargo.toml:[] = "\*" -
add the following to your
lib.rs:
This package does not provide bindings. Please use coincbc-sys, coinclp-sys to use Cbc, Clp, e.g.
[]
= { = "\*" }
Configuration
Features
The following Cargo features are supported:
defaulttoosiclpandclpsolverfeature;osiclpto build with Osi supported;clpsolverto buildClpSolverlib and crate the api forRust. If you do not useClpdirectly, you can disable this feature to reduce the build time;
Environment
The package build from the source and link statically by default. It also provide the following environment variables to allow users to link to system library customly:
CARGO_COINUTILS_STATICto link to CoinUtils statically;CARGO_COINUTILS_SYSTEMto link to CoinUtils system library;CARGO_OSI_STATICto link to Osi statically ifwith_osifeature is enabled;CARGO_OSI_SYSTEMto link to Osi system library ifwith_osifeature is enabled;CARGO_CLP_STATICto link to Clp statically;CARGO_CLP_SYSTEMto link to Clp system library;
Set the environment variable to 1 to enable the feature. For example, to link to system library dynamically, set CARGO_${LIB_NAME}_SYSTEM to 1; to link to system library statically, set both CARGO_${LIB_NAME}_SYSTEM and CARGO_${LIB_NAME}_STATIC to 1.
Windows and vcpkg
On Windows, if ${LIB_NAME}_SYSTEM is set to 1, clp-src will use
vcpkg to find Clp. Before building, you must have the correct Clp
installed for your target triplet and kind of linking. For instance,
to link dynamically for the x86_64-pc-windows-msvc toolchain, install
clp for the x64-windows triplet:
To link Clp statically, install clp for the x64-windows-static-md triplet:
To link Clp and C Runtime (CRT) statically, install clp for the x64-windows-static triplet:
and build with +crt-static option
RUSTFLAGS='-C target-feature=+crt-static'
Please see the "Static and dynamic C runtimes" in The Rust reference for detail.
Cross Compilation
you can compile it for the other target by providing the --target option to
cargo build.
| Target | supported |
|---|---|
arm-unknown-linux-gnueabi |
✓ |
arm-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-gnueabi |
✓ |
armv7-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-musleabi |
✓ |
armv7-unknown-linux-musleabihf |
✓ |
aarch64-unknown-linux-gnu |
✓ |
aarch64-unknown-linux-musl |
✓ |
riscv64gc-unknown-linux-gnu |
✓ |
x86_64-pc-windows-msvc |
✓ |
x86_64-unknown-linux-gnu |
✓ |
x86_64-unknown-linux-musl |
✓ |
| others | not test |
Contribution
Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.