10个版本
0.1.0-alpha9 | 2021年3月11日 |
---|---|
0.1.0-alpha8 | 2021年2月5日 |
0.0.0 | 2021年1月28日 |
#28 in #makefile
45每月下载次数
31KB
692 行
Epine
Epine是一个强大的Makefile生成器,使用Lua编程语言进行配置。
目标
- 生成单个Makefile
- 可扩展和可缩减
- 允许任何人共享他们的Epine模块和辅助库
非目标
- 替代
make
- 替代包管理器
安装
使用Cargo安装Epine的最新版本
cargo install epine
如果您还没有安装Cargo/Rust,您可以从 rustup.rs 获取。
你好,Epine!
进入您选择的文件夹,您希望在那里生成Makefile。
mkdir hello-epine
cd hello-epine
在这个新文件夹中,创建一个名为 Epine.lua
的新文件
return {
action "hello" {
echo("hello!");
};
}
要(重新)生成Makefile,只需运行 epine
,无需任何参数。
epine
Epine将运行包含在 Epine.lua
文件中的Lua代码,并根据此文件返回的内容生成Makefile。
hello:
@echo hello!
.PHONY: hello
使用远程模块
生成的Makefile的描述方式非常接近最终生成的结果。如果只是这样,Epine将只是一个非常讨厌的用Lua编写Makefile的方式...
这就是为什么Epine能够从GitHub仓库下载和加载Lua模块。这使得重用和共享辅助函数和库变得非常容易。目前仅支持GitHub,但我非常希望在未来看到Epine支持更多来源;欢迎贡献!
以下是一个示例,展示了Makefile生成可以多么简单
-- the `tek` module, which was made for students at Epitech, takes care of
-- generating many rules automatically, like "all", "clean", "fclean", etc...
-- it also generates the proper rules to build and run unit tests!
local tek = require "@nasso/epine-tek/v0.1.0-alpha"
-- project metadata (its name, and the targets built by the "all" target)
tek:project "libmy" {"libmy.a", "hello"}
-- a C static library!
tek:static "libmy.a" {
language = "C";
}
-- a C binary using the library!
tek:binary "hello" {
language = "C";
prerequisites = {"libmy.a"};
srcs = {"main.c"};
libs = {"my"};
}
-- return the Makefile description to Epine for generation
return tek:make()
这个简单的脚本,只有12行代码,生成了一个干净、可读的、完全功能的 Makefile!当然,这仅仅是一个Epine能做什么的简单示例。
因为它本质上都是Lua,所以您可以想象任何类型的API来描述您的项目,并且您可以与任何人共享它!
状态
Epine仍然是一个非常年轻的工程项目。我构建它的主要原因是我不想在我作为 Epitech 学生的前几年中,在不同的学校项目之间复制粘贴我的Makefile。
许可证
Epine 采用了 MIT 许可证和 Apache 许可证(版本 2.0)的条款,您可选择其中之一。
请参阅 LICENSE-MIT 和 LICENSE-APACHE-2.0 文件以获取完整文本。
依赖项
~9–23MB
~373K SLoC