6 个版本

使用旧的 Rust 2015

0.2.2 2018年4月30日
0.2.1 2017年6月17日
0.1.2 2016年10月25日
0.1.1 2016年6月21日
0.0.1 2015年6月22日

#335 in 构建工具

BSD-3-Clause 协议

38KB
829

yabs

Build Status

又一个构建系统。一个用于 C 和 C++ 的构建系统,使用 TOML 描述项目。

注意:Yabs 仍然是一个非常正在进行中的项目,可能会发生变化。直到 yabs 达到版本 1.0.0,应假定 yabs 仍将继续变化。

获取 Yabs

要安装 yabs,只需运行 cargo install yabs。如果您从 crates.io 安装,请参阅 docs.rs 上与您的 yabs --version 输出对应的文档版本。否则,克隆此存储库,构建发布目标,并将 yabs 添加到您的 $PATH

构建

要构建 yabs,您需要 rustccargo。只需运行 cargo build --release,这将在 target/release 中构建一个名为 yabs 的二进制文件。

使用

yabs -h 的输出

yabs 0.2.0
Alberto Corona <ac@albertocorona.com>
Yet another build system

USAGE:
    yabs [FLAGS] [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
        --sources    Print source files found by yabs or listed in 'src'
    -V, --version    Prints version information

SUBCOMMANDS:
    build    Build a binary or library, builds all binaries and libraries if no options are given
    clean    Removes all object files, binaries and libraries built by yabs
    help     Prints this message or the help of the given subcommand(s)
    new      Create a new yabs project

定义项目

yabs 使用 TOML 来定义项目。例如,一个使用 SDL2、SDL2-image、SDL2-ttf 和 Lua 5.3 库的 C++ 项目看起来可能如下所示

[project]
name = "kuma"
file-extensions = ["cpp"]
compiler = "g++"
compiler-flags = ["std=c++14", "O0", "Wall", "Wextra", "g", "D_DEBUG_"]
include = ["src","`pkg-config --cflags sdl2 lua5.3`", "/usr/include/yaml-cpp", "third_party/sol2/single/sol"]
libraries = [
	"`pkg-config --libs sdl2 SDL2_image SDL2_ttf SDL2_mixer lua5.3 yaml-cpp`",
]
ignore = [
	"tests/",
	"third_party/",
]


[[bin]]
name = "kuma"
path = "./src/main.cpp"


[[lib]]
name = "libkuma"
types = ["static"]

构建项目

目前,yabs 构建 [[bin]][[lib]] 部分中列出的所有目标。

键和值

以下表格描述了 yabs 项目文件中可用的键。

[project]

类型
name 项目的名称 字符串
文件扩展名 用于源文件的扩展名 数组
版本 版本号 字符串
编译器 要使用的编译器 字符串
src 源文件 数组
要链接的库 数组
librariy-directories 要使用的库目录 数组
include 包含目录 数组
compiler-flags 编译器标志 数组
linker-flags 链接器标志 数组
ignore 要忽略的目录或文件 数组
before-script 在构建之前运行的脚本 数组
after-script 在构建之后运行的脚本 数组
ar 要使用的归档工具 字符串
arflags 归档工具的标志 数组

[[bin]]

类型
name 二进制文件名称和路径 字符串
path 二进制入口点的路径(main 字符串

[[lib]]

类型
name 库的名称 字符串
types 要创建的库类型 数组

依赖

~10MB
~202K SLoC