#cpp #cargo-build #ffi #build-dependencies #build-script #generator #interop

构建 cxx-build

C++ 代码生成器,用于将 cxxcrate 集成到 Cargo 构建

127 个稳定版本

1.0.126 2024年8月15日
1.0.124 2024年6月14日
1.0.120 2024年3月23日
1.0.111 2023年12月17日
0.3.4 2020年5月22日

#52 in 构建工具

Download history 238859/week @ 2024-05-03 241820/week @ 2024-05-10 233679/week @ 2024-05-17 221894/week @ 2024-05-24 240007/week @ 2024-05-31 212565/week @ 2024-06-07 222363/week @ 2024-06-14 227068/week @ 2024-06-21 207616/week @ 2024-06-28 201182/week @ 2024-07-05 237806/week @ 2024-07-12 237580/week @ 2024-07-19 209029/week @ 2024-07-26 195710/week @ 2024-08-02 211109/week @ 2024-08-09 193320/week @ 2024-08-16

852,738 每月下载量
310 个 crate 中使用 (129 直接使用)

MIT/Apache

375KB
10K SLoC

CXX 代码生成器,用于构建和编译 C++ 代码。

此工具旨在从 Cargo 构建脚本中执行 CXX 的 C++ 代码生成器,根据用例设置任何额外的编译器标志,并调用 C++ 编译器。


示例

构建 CXX 桥接的规范 Cargo 构建脚本的示例

// build.rs

fn main() {
    cxx_build::bridge("src/main.rs")
        .file("src/demo.cc")
        .std("c++11")
        .compile("cxxbridge-demo");

    println!("cargo:rerun-if-changed=src/main.rs");
    println!("cargo:rerun-if-changed=src/demo.cc");
    println!("cargo:rerun-if-changed=include/demo.h");
}

包含此构建脚本的可运行工作设置显示在 https://github.com/dtolnay/cxxdemo 目录中。


替代方案

对于 Bazel 或 Buck 等非 Cargo 构建,CXX 提供了一种调用 C++ 代码生成器作为独立命令行工具的替代方式。此工具作为 cxxbridge-cmdcrate 打包。

$ cargo install cxxbridge-cmd  # or build it from the repo

$ cxxbridge src/main.rs --header > path/to/mybridge.h
$ cxxbridge src/main.rs > path/to/mybridge.cc

依赖项

~0.9–8.5MB
~64K SLoC