#native #build #cmake #link #build-system #portable #bindings

构建 bind-builder

构建依赖库,帮助创建依赖于本地依赖项的crate,使其更具可移植性

1 个不稳定版本

0.1.0-alpha.12024年7月3日

#237 in 构建实用工具

自定义许可协议

28KB
539

bind-builder

Rust 构建依赖库,帮助您构建和链接本地库。

要求

  • cmake 必须已安装并可在系统路径中找到。
  • git 如果您希望克隆仓库。
  • c/c++ 构建工具。

用法

在开始之前,请确保您要构建的 cmake 项目已为要链接的库设置了安装目标。有关更多信息,请参阅 cmake 文档

注意:正确设置安装目标是至关重要的。一些库如 zlib${CMAKE_INSTALL_PREFIX} 嵌入其中,导致生成的二进制文件放置不当。

示例

let project = CMakeBuilder::clone(
    "some-repo",
    "[email protected]:user/repo.git",
    "tag"
    )
    .generator("Ninja")
    .build();

let library = LocalLibrary::from(project)
    .link_target("some_library")
    .link_system_target("some_system_library")
    .get();

cxx_build::bridge("src/bindings.rs")
    .cpp(true)
    .static_flag(true)
    .std("c++20")
    .file("src/cpp_crate.cpp")
    .include(Path::new("src"))
    .bind_library(library)
    .compile("rust-cxx-testing");

如果您正在链接到共享库,并且为 Linux 或 MacOS 构建,则需要显式设置 @rpath 以包含二进制文件当前目录。

这可以通过向您的最终工件 build.rs 中添加以下内容来完成

#[cfg(target_os="macos")]
println!("cargo:rustc-link-arg=-Wl,-rpath,@loader_path");

#[cfg(target_os="linux")]
println!("cargo:rustc-link-arg=-Wl,-rpath,$ORIGIN");

依赖项

~250KB