#构建工具 #构建 #框架 #工具 #测试框架 #C #测试

程序 crame

crame 是一个用于 C 项目的构建工具,包含一个小的测试框架

2 个版本

0.1.1 2022 年 9 月 3 日
0.1.0 2022 年 8 月 30 日

#2278命令行工具

MIT/Apache

35KB
830

crame

C 项目的构建工具,包含一个小的测试框架。

Crates.io tests license

功能

  • 创建一个简单的目录结构、主文件和测试运行器的 C 项目。
  • 自动初始化 git 仓库。
  • 无依赖的测试运行器。
  • 使用 Just 构建、运行、测试、监视和添加代码模块。

计划中的功能

  • 将构建器、运行器、测试器和监视器从 justfile 移出,放入应用程序中。
  • 可配置的构建选项。
  • 添加已设置测试的代码模块。

原理

这个 CLI 工具旨在为简单的 C 项目提供类似 Cargo 的体验。其主要目标是减少编写 makefile、添加和运行测试以及添加带有正确包含保护器的源文件的繁琐。

该框架目前依赖于 Just 实现大部分功能。该应用程序的基础是 justfile

为什么用 Rust 写它?

由于该项目受到 Cargo 和其他现代开发工具的启发,因此使用 Rust 和其丰富的 CLI 库似乎是顺理成章的。

安装

先决条件

crame 项目目前使用 Just 作为主要构建工具和测试运行器。该 justfile 也依赖于 fd 并需要 watchexec 进行文件监视。

还需要链接到 cc 可执行文件的 C 编译器。

Cargo

如果您是 Rust 程序员,可以使用 cargo 安装 crame。

cargo install crame

构建

由于 crame 是用 Rust 编写的,因此您需要获取一个 Rust 安装 才能编译它。

构建 crame

git clone https://github.com/sonro/crame
cd crame
cargo build --release
./target/release/crame

如何使用

创建项目

使用 crame new 在指定的目录中创建一个项目。除非目录已经是一个 git 仓库,或者 --vcs 选项设置为 none,否则会自动初始化一个 git 仓库。

crame new my-project

生成的目录结构

my-project
├── Crame.toml
├── justfile
├── lib
├── src
│   └── main.c
└── tests
    ├── run.c
    ├── test_all.c
    └── unit
        └── it_works.c

构建和运行

target/ 目录中将程序构建为可执行文件。

just build

先构建程序然后运行它。

just run

justfile 将添加 src/lib/ 目录下的所有 .c 文件作为 c 编译器的参数。它不需要像 makefile 一样保持最新。

添加模块

使用 just add-modulesrc 目录中创建 .c.h 文件。

just add-module my_module

生成的文件

// src/my_module.h
#ifndef MY_PROJECT_MY_MODULE_H
#define MY_PROJECT_MY_MODULE_H

#endif
// src/my_module.c
#include "my_module.h"

测试

测试文件必须具有以下布局

#if defined HEADERS
// include all headers in this section
#elif defined TESTS
// create tests in this section
#endif

tests/unit/ 中添加单元测试。使用 TEST 宏指定测试名称和函数,以及使用 ASSERT 宏测试布尔值。

// tests/unit/my_test.c
#if defined HEADERS
#include "../../src/my_module.h"
#elif defined TESTS

TEST("test name") {
    ASSERT(1 + 1 == 2);
}

#endif

将测试文件包含在 tests/test_all.c 中。

// tests/test_all.c
#include "unit/my_test.c"
...

使用以下命令构建和运行所有测试

just test

这将在 src/lib/tests/ 目录中的所有 .c 文件上构建。

许可证

crame 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT

依赖项

~11–23MB
~363K SLoC