8 个版本
新版本 0.2.8+2.10.12 | 2024年8月20日 |
---|---|
0.2.7+2.10.11 | 2024年4月11日 |
0.2.6+2.10.11 | 2023年10月27日 |
0.2.4+2.10.10 | 2023年5月18日 |
0.2.2+2.10.8 | 2023年3月28日 |
#1679 in 算法
86 每月下载
在 3 个 crate(2 个直接使用) 中使用
4MB
90K SLoC
Cbc-src
Cbc-src
crate 是一个 *-src crate。它将 Cbc 库链接到 cargo 构建的可执行文件,但不提供 Rust 绑定。 Cbc 使用 CoinUtils (CoinUtils-src), Osi (Osi-src), Cgl (Cgl-src) 和 Clp (Clp-src) 构建。
通过此包,您无需担心在系统中安装 CBC,并且它可以为 所有平台 构建。
Cbc (Coin-or 分支和切割) 是一个用 C++ 编写的开源混合整数线性规划求解器。它可以作为一个可调用的库或使用独立的可执行文件。它可以通过各种建模系统、软件包等以多种方式使用。
用法
-
将以下内容添加到您的
Cargo.toml
[dependencies] cbc-src = "\*"
-
将以下内容添加到您的
lib.rs
extern crate cbc_src;
此包不提供绑定。请使用 coincbc-sys、coinclp-sys 来使用 Cbc、Clp 等。
[dependencies]
coincbc-sys = { version = "\*" }
配置
功能
以下 Cargo 功能得到支持
default
为osicbc
和cbcsolver
功能;osicbc
用于与支持Osi
构建。然而,Osi
总是构建,这使得Cbc
调用Clp
求解器和Cgl
库;cbcsolver
用于构建CbcSolver
库并为Rust
提供API。如果您不直接使用Cbc
,您可以禁用此功能以减少构建时间;
环境
默认情况下,此包从源代码构建并静态链接。它还提供了以下环境变量,允许用户自定义链接到系统库
CARGO_COINUTILS_STATIC
用于静态链接到 CoinUtils;CARGO_COINUTILS_SYSTEM
用于链接到 CoinUtils 系统库;CARGO_OSI_STATIC
用于静态链接到 Osi;CARGO_OSI_SYSTEM
用于链接到 Osi 系统库;CARGO_CLP_STATIC
用于静态链接到 Clp;CARGO_CLP_SYSTEM
用于链接到 Clp 系统库;CARGO_CGL_STATIC
用于静态链接到 Cgl;CARGO_CGL_SYSTEM
用于链接到 Cgl 系统库;CARGO_CBC_STATIC
用于静态链接到 Cbc;CARGO_CBC_SYSTEM
用于链接到 Cbc 系统库;
将环境变量设置为 1
以启用该功能。例如,要动态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
设置为 1
;要静态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
和 CARGO_${LIB_NAME}_STATIC
都设置为 1
。
Windows 和 vcpkg
在 Windows 上,如果 ${LIB_NAME}_SYSTEM
设置为 1
,cbc-src
将使用 vcpkg 来查找 Cbc。在构建之前,您必须为目标三元组和链接类型安装正确的 Cbc。例如,要为 x86_64-pc-windows-msvc
工具链动态链接,安装 cbc
的 x64-windows
三元组
vcpkg install cbc --triplet x64-windows
要静态链接 Cbc,安装 cbc
的 x64-windows-static-md
三元组
vcpkg install cbc --triplet x64-windows-static-md
要静态链接 Cbc 和 C 运行时 (CRT),安装 cbc
的 x64-windows-static
三元组
vcpkg install cbc --triplet x64-windows-static
并使用 +crt-static
选项进行构建
RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc
请参阅 《Rust 参考》中的“静态和动态 C 运行时” 了解详细信息。
交叉编译
您可以通过向 --target
选项提供 cargo build
提供其他目标的编译。
目标 | 支持 |
---|---|
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 |
✓ |
其他 | 未测试 |
贡献
您的贡献非常受赞赏。请不要犹豫,打开一个问题或拉取请求。请注意,任何提交给项目包含的贡献将根据在 LICENSE 中给出的条款进行许可。
依赖项
约12MB
约311K SLoC