Emake:你见过最简单的 C/C++ 构建工具

CMake 已经成为 C++ 构建工具事实上的标准了,即便觉得它很难用,但项目发布,跨部门协同,基本都以 cmake 为准。尽管你可能觉得其它构建工具更顺手,没问题,你们平时用就行,但项目发布或者跨团队协同时,你得同时用上 cmake 来标准化。

那么对于内部中小项目,非正式个人练手项目,或者非发布阶段的开发过程,是否也需要上 cmake 呢?还真不一定,一旦不用 cover 整个宇宙的构建需求,我们大可以找一个趁手的二号构建工具,满足平时使用。那么哪个二号构建工具值得推荐呢?

很多流行的构建工具,从 xmake 到 meson,恐怕都不适合,因为他们都试图同 cmake 去竞争试图要 cover 整个宇宙,即便号称精简,也不可能精简到哪里,尽管他们最简单的 demo 看起来好像真的超简单,但再稍微复杂点,比如考虑多平台架构,加个 release/debug 和包管理,一个个都变得丑陋不堪,立马原型毕露,因为他们都是命令式的。

我从 2009 年开发了一个叫做 emake 的构建工具,就是一个 emake.py 的单一脚本,持续使用并陆陆续续迭代了 15 年,今天感觉可以让他出来走两步。

推荐它,因为它有可能是你见过最简单的构建工具了,简单到什么程度呢?

第一:定义式构建工具

简单点例子:main.mak 就三行:

flag: -Wall, -O3
mode: exe
src: foo.c, bar.c, main.c

第一行设定编译参数,第二行指明目标格式,第三行设定源代码,这也是大部分时候写点小玩具,小测试的样子,然后:

emake main.mak

就能生成 main.exe 了,定义式的意思就是不像 cmake 一样每次要在 CMakeLists.txt 里写个小程序,而是跟 IDE 一样定义好源文件,设定好 release/debug 的编译参数,然后 emake 帮你做好默认工具链初始化,依赖分析,多核编译等等一堆琐事。

而且还没有 cmake 的 rm -rf build && mkdir build && cmake -B build -G "MinGW Makefiles" . 初始化环节,这个初始化每次都很蛋疼,极大的阻碍了我创建新项目的热情。更不用在 build 目录生成一大堆 shit,写好 emake 工程文件就能直接编译出可执行了,没有任何第二层构建工具的依赖。

也不会每个项目像 cmake 一样单独占用一个目录,我一堆小项目全部放一个目录里都没事情。到这里你可能会说,好像也没比 xmake 简单多少啊?别急我们还能继续简化。

第二:零工程文件

如果你连工程文件都懒得写,没关系,emake 支持以 docstring 的形式将工程配置写到代码中:

#include <stdio.h>

//! flag: -Wall, -O3
//! src: foo.c, bar.c
int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值