1 个不稳定版本
| 0.1.0 | 2024年1月19日 |
|---|
#2326 在 算法 中
8KB
Coinpopt-sys
coinipopt-sys 包是一个 *-sys 包。该包提供对 Ipopt 库的低级绑定。
通过此包,您无需担心在系统中安装 Ipopt,它是一个适用于 所有平台 的包。
Ipopt(Coin-or 线性规划)是一个开源的线性规划求解器。它主要用于作为可调用的库使用,但同时也提供了一个基本的、独立的可执行版本。
使用方法
只需将以下内容添加到您的 Cargo.toml
[dependencies]
coinipopt-sys = "0.2"
配置
以下 Cargo 功能受支持
default到osiclp和clpsolver功能;osiclp用于构建支持 Osi 的版本;clpsolver用于构建ClpSolver库并为Rust创建 API。如果您不直接使用Clp,则可以禁用此功能以减少构建时间;
默认情况下,包会构建和链接静态库。它还提供以下环境变量以允许用户自定义链接系统库:
CARGO_IPOPT_STATIC用于静态链接 Ipopt;CARGO_IPOPT_SYSTEM用于链接系统库;
将环境变量设置为 1 以启用此功能。例如,要动态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM 设置为 1;要静态链接到系统库,将 CARGO_${LIB_NAME}_STATIC 设置为 1。
您还可以使用带有 no-default-features 的 ipopt-sys,并在 Cargo.toml 中添加 ipopt-src,启用 ipopt-src 定义的关联功能。请参阅 Ipopt-src。
Windows 和 vcpkg
在Windows上,如果 ${LIB_NAME}_SYSTEM 设置为 1,则 ipopt-src 将使用 [vcpkg] 来查找Ipopt。在构建之前,您必须为目标三元组和链接类型安装正确的Ipopt。例如,为 x86_64-pc-windows-msvc 工具链动态链接,为 x64-windows 三元组安装 ipopt
vcpkg install ipopt --triplet x64-windows
要静态链接Ipopt,为 x64-windows-static-md 三元组安装 ipopt
vcpkg install ipopt --triplet x64-windows-static-md
要静态链接Ipopt和C运行时(CRT),为 x64-windows-static 三元组安装 ipopt
vcpkg install ipopt --triplet x64-windows-static
并使用 +crt-static 选项进行构建
RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc
请参阅Rust参考中的“静态和动态C运行时”以获取详细信息。
交叉编译
由于 [openblas-src] 的问题 #101,我们无法使用 openblas-static 功能交叉编译此包。因此,如果您想交叉编译此包,可以使用 mike-kfed。
将其添加到您的 project/.cargo/config.toml 中。
[patch.crates-io]
openblas-src = { git = "https://github.com/mike-kfed/openblas-src.git", branch = "arm-cross-compile" }
您可以通过为 --target 选项提供 cargo build 提供其他目标进行编译。
| 目标 | 支持 |
|---|---|
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-msvc |
✓ |
x86_64-unknown-linux-gnu |
✓ |
贡献
非常感谢您的贡献。请随时打开一个问题或拉取请求。请注意,提交给项目的任何贡献都将根据在 LICENSE 中给出的条款进行许可。
依赖关系
~2.2–4MB
~96K SLoC