#build #pkg-config #cc #build-dependencies #args #merge #bindgen

build cc-args

pkg-config 和 bindgen,cc 之间的线索

2 个不稳定版本

0.2.0 2024年1月20日
0.1.0 2022年6月11日

#232 in 构建工具

自定义许可证

15KB
433 代码行

cc-args

crate.io rustdocs

tl;dr

bindgen::Builder::merge_cc_args(&self, &pkg_config::Library)

此crate导出CcArgsMergeCcArgs

CcArgs

它提供链接路径、包含路径、框架路径、框架、库、ld_args和定义。

MergeCcArgs

它提供接受CcArgs实现的merge_cc_args方法。

功能
  • pkg_configpkg_config::Library 实现 CcArgs
  • cccc::Build 实现 MergeCcArgs
  • bindgenbindgen::Builder 实现 MergeCcArgs

示例

build.rs

use std::path::PathBuf;

use cc_args::{bindgen, pkg_config, MergeCcArgs};

fn main() {
    let out_path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
    println!("cargo:rerun-if-changed=wrapper.h");
    bindgen::Builder::default()
        .merge_cc_args(&pkg_config::probe_library("libzstd").unwrap())
        .header("wrapper.h")
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .generate()
        .unwrap()
        .write_to_file(out_path.join("bindings.rs"))
        .unwrap();
}

依赖项

~0–1.3MB
~25K SLoC