Cgl-src

Package Documentation License

description

cgl-src crate is a *-src crate. This links Cgl libraries to executable build by cargo, but does not provide Rust bindings. [Cgl] build with [CoinUtils] ([CoinUtils-src]), [Osi] ([Clp-src]) and [Clp] ([Clp-src])(Optional) support.

By this package, you don't need to worry about installing Cgl in the system, and it can be built for all platforms.

The COIN-OR Cut Generation Library (Cgl) is a collection of cut generators that can be used with other COIN-OR packages that make use of cuts, such as, the mixed integer linear programming solvers [Cbc] ([Cbc-src]). Cgl uses the [Osi] ([Osi-src]) to use or communicate with a solver, such as the linear programming solvers Clp. It does not directly call a solver.

Usage

Just add the following to your Cargo.toml:

toml [dependencies] cgl-src = "0.2"

This package does not provide bindings. Please use [coincbc-sys], [coinclp-sys] to use Cbc, Clp, e.g.

toml [dependencies] coincbc-sys = { version = "0.2" }

Configuration

The following Cargo features are supported:

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:

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, cgl-src will use [vcpkg] to find Cgl. Before building, you must have the correct Cgl installed for your target triplet and kind of linking. For instance, to link dynamically for the x86_64-pc-windows-msvc toolchain, install cgl for the x64-windows triplet:

sh vcpkg install cgl --triplet x64-windows

To link Cgl statically, install cgl for the x64-windows-static-md triplet:

sh vcpkg install cgl --triplet x64-windows-static-md

To link Cgl and C Runtime (CRT) statically, install cgl for the x64-windows-static triplet:

sh vcpkg install cgl --triplet x64-windows-static

and build with +crt-static option

RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc

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-linux-androideabi | ✓ | | armv7-unknown-linux-gnueabi | ✓ | | armv7-unknown-linux-gnueabihf | ✓ | | armv7-unknown-linux-musleabi | ✓ | | armv7-unknown-linux-musleabihf | ✓ | | riscv64gc-unknown-linux-gnu | ✓ | | x86_64-pc-windows-gnu | ✓ | | x86_64-unknown-linux-gnu | ✓ |

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.