#build-dependencies #build-script #cargo-build #tasks #now #src #non-compile

build gbuild

A build-time dependency for Cargo build scripts to enable easy integration with glib/gio/gtk non-compile build tasks. For now it only supports bundling data files using GResource.

1 个不稳定版本

0.1.0 2021年5月23日

#536构建实用工具


screen-selector 中使用

MIT 许可证

9KB
110

gbuild

一个用于在基于 glib/gio/gtk 的库和应用程序中执行常规非编译构建任务的库。

目前它仅支持将 gio GResources 嵌入最终二进制文件。

文档

使用 gbuild

首先,您需要为您的 crate 添加一个构建脚本 (build.rs),并通过以下方式将此 crate 添加到您的 Cargo.toml 中:

[build-dependencies]
gbuild = "0.1"

接下来,您将想要编写一个类似以下的构建脚本

// build.rs
fn main() {
    gbuild::Resource::builder()
        .src_dir("src")
        .definition_file("src/br.kov.duplikat.gresource.xml")
        .build()
        .expect("Bad arguments for gresource compilation")
        .compile();
}

这将从 xml 描述中生成 .c 文件,构建它,并将其链接到您的 rust 二进制文件中,从而使您能够在不进行任何进一步注册的情况下使用代码中的资源,例如

fn load_readme() -> Result<String, String>
    let gfile = gio::File::for_uri("resource:///br/kov/duplikat/README");
    match gfile.load_contents(gio::NONE_CANCELLABLE) {
        Ok((bytes, _string)) => {
            std::str::from_utf8(&bytes).unwrap().to_string()
        },
        Err(e) => format!("Could not load test file: {}", e),
    }

外部配置

此 crate 使用 pkg-config 二进制文件(而不是 crate)来获取包含和链接 gio-2.0 的标志,因此它将受到影响 pkg-config 的任何环境变量的影响。

对于构建生成的 C 文件,此 crate 使用 cc crate,它也可能受到各种环境变量的影响。请注意,目前此 crate 在构建资源 c 文件时将替换任何现有的 CFLAGS 变量。

许可证

本项目采用 MIT 许可证,请参阅 (LICENSE 文件)。

依赖项

~11MB
~232K SLoC