2 个版本
0.1.1 | 2022 年 9 月 3 日 |
---|---|
0.1.0 | 2022 年 8 月 30 日 |
#2278 在 命令行工具
35KB
830 行
crame
C 项目的构建工具,包含一个小的测试框架。
功能
- 创建一个简单的目录结构、主文件和测试运行器的 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-module
在 src
目录中创建 .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-APACHE 和 LICENSE-MIT。
依赖项
~11–23MB
~363K SLoC