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 算法

Download history 3/week @ 2024-04-23 1/week @ 2024-05-14 13/week @ 2024-05-21 2/week @ 2024-05-28 8/week @ 2024-06-04 7/week @ 2024-06-11 2/week @ 2024-06-18 6/week @ 2024-06-25 3/week @ 2024-07-16 51/week @ 2024-07-23 31/week @ 2024-07-30 1/week @ 2024-08-06

86 每月下载
3 个 crate(2 个直接使用) 中使用

Apache-2.0

4MB
90K SLoC

C++ 90K SLoC // 0.1% comments Automake 247 SLoC // 0.2% comments Rust 120 SLoC Shell 11 SLoC // 0.3% comments

Cbc-src

Package Documentation License

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++ 编写的开源混合整数线性规划求解器。它可以作为一个可调用的库或使用独立的可执行文件。它可以通过各种建模系统、软件包等以多种方式使用。

用法

  1. 将以下内容添加到您的 Cargo.toml

    [dependencies]
    cbc-src = "\*"
    
  2. 将以下内容添加到您的 lib.rs

    extern crate cbc_src;
    

此包不提供绑定。请使用 coincbc-syscoinclp-sys 来使用 Cbc、Clp 等。

[dependencies]
coincbc-sys = { version = "\*" }

配置

功能

以下 Cargo 功能得到支持

  • defaultosicbccbcsolver 功能;
  • 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}_SYSTEMCARGO_${LIB_NAME}_STATIC 都设置为 1

Windows 和 vcpkg

在 Windows 上,如果 ${LIB_NAME}_SYSTEM 设置为 1cbc-src 将使用 vcpkg 来查找 Cbc。在构建之前,您必须为目标三元组和链接类型安装正确的 Cbc。例如,要为 x86_64-pc-windows-msvc 工具链动态链接,安装 cbcx64-windows 三元组

vcpkg install cbc --triplet x64-windows

要静态链接 Cbc,安装 cbcx64-windows-static-md 三元组

vcpkg install cbc --triplet x64-windows-static-md

要静态链接 Cbc 和 C 运行时 (CRT),安装 cbcx64-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