2个版本

0.1.1 2024年2月15日
0.1.0 2023年10月13日

#211 in 构建工具

MIT 许可证

19KB
262

conan2-rs

简介

conan2-rs 是Conan C/C++包管理器(仅适用于2.0版本)的Cargo构建脚本的包装器。

它自动从Conan依赖中提取C/C++库链接标志,并将它们传递给 rustc

使用Conan添加C/C++依赖项

使用Conan将C/C++依赖项添加到Rust项目的最简单方法是添加一个普通的 conanfile.txt 文件,如下所示

[requires]
libxml2/2.11.4
openssl/3.1.3
zlib/1.3

示例用法

conan2 添加到 Cargo.toml 构建依赖项部分

[build-dependencies]
conan2 = "0.1"

将以下行添加到项目的 build.rs 脚本中,以调用 conan install 并自动将Conan依赖信息传递给Cargo

use conan2::ConanInstall;

fn main() {
    ConanInstall::new().run().parse().emit();
}

最常用的 build_type Conan设置将根据当前的Cargo构建配置(调试或发布)自动定义。

假设Conan可执行文件名为 conan,除非设置了 CONAN 环境变量以覆盖。

在项目仓库中还可以找到使用 conan2-rs 链接Conan依赖项的Rust crate的示例。

高级用法

使用从Cargo目标信息派生的自定义Conan配置文件名称

use conan2::ConanInstall;

fn main() {
    let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
    let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
    let conan_profile = format!("{}-{}", target_os, target_arch);

    ConanInstall::new()
        .profile(&conan_profile)
        .build("missing")
        .run()
        .parse()
        .emit();
}

从Conan依赖中获取C/C++包含路径

要使用包含路径列表,请在解析 conan install 输出后执行以下操作

use conan2::ConanInstall;

let metadata = ConanInstall::new().run().parse();

for path in metadata.include_paths() {
    // Add "-I{path}" to CXXFLAGS or something.
}

metadata.emit();

依赖项

~355–760KB
~17K SLoC