现代化的 C/C++构建工具,除 cmake 之外的另一选择

2019-07-12 08:04:37 +08:00
 waruqi

最近更新了下文档站,过来晒一贴。

xmake 的新版文档站点: https//xmake.io中文站

如果大家不习惯 cmake 的语法,或者觉得难于上手,学习成本过高,那么可以试下这款基于 lua 的跨平台 c/c++构建工具: https://github.com/xmake-io/xmake

xmake 主打轻量,快速,语法简洁明了易上手,采用直接构建,无任何依赖,甚至不依赖 make/makefile

不同平台完全一致的构建行为,并且在支持 conan/vcpkg/clib/brew 等第三方包仓库的同时,还自建了自有包依赖仓库管理xmake-repo,更好的处理跨平台依赖包问题。

依赖包编译效果见:

另外 xmake 除了支持 c/c++,还支持多语言混合编译,只要是能生成 native 二进制兼容的语言,大部分都能支持,像 objc, swift, dlang, rust, asm 等,golang 也做了一些支持,但还不完善。

关于构建项目类型方面,除了基础的静态库,动态库和终端程序编译,还内置了对 cuda, qt, wdk 驱动,mfc, winsdk 等项目类型的支持,用户可自由搭配 xmake-vscode, xmake-idea 等插件,在 vscode, idea, clion 等编辑环境编译和开发 qt, wdk, cuda 等项目。

当然,xmake 也提供了高度的灵活性和扩展性,方便用户自己定制化扩展其他项目的构建。

大伙有兴趣的话可以下载试试体验下,xmake 内置了 luajit,所以安装完全无第三方依赖,非常轻量。

具体安装过程,可以看下文档:xmake 安装和快速上手

更多关于 xmake 的描述和介绍,大家可以到Github上去查看,或者可以浏览下 xmake 的文档站点,里面有完整详细的中英文文档,如果大家感兴趣的话,也欢迎 star 关注此项目。

6573 次点击
所在节点    程序员
26 条回复
iwtbauh
2019-07-12 13:08:32 +08:00
其实 Makefile 足够了,如果能使用 GNU make 扩展的话。很舒服。

唯一的缺点是会破坏可移植性。比如 FreeBSD 系统用的是 BSD make (虽然也是可以安装 devel/gmake )。因此只在特定操作系统的项目中使用。比如 Linux 内核的构建系统 kbuild,就是基于 GNU Makefile 的一组宏。kbuild 也被用于特定 Linux 的项目,如 busybox,openwrt 等

如果可移植性比较重要。则使用 GNU autotools ( autoconf,automake 等)之类的工具就非常舒服了。

cmake 这种东西,前向兼容能力一般,还非常臃肿,灵活性也很不好,反正我是很不喜欢用。

xmake 的文档我看了看,但是也没有能提起来我兴趣的地方。
gerorim
2019-07-12 13:18:10 +08:00
习惯使用 makefile
支持一下,有机会在项目中试试
waruqi
2019-07-12 13:35:09 +08:00
@iwtbauh 这个就看个人喜好了。比如我,对 autotools 之类的就是深恶痛觉,没感觉一丁点好的地方,所以才折腾了 xmake。。
llbgurs
2019-07-12 13:44:12 +08:00
mathgl
2019-07-12 16:56:20 +08:00
looks good.

will give it a try.
waruqi
2019-07-23 10:23:45 +08:00
@zjsxwc 内建的 boost 库支持我加上了,你可以试试

默认最小编译。。可自行选择获取 对应的 boost 模块,win,linux,mac 等都支持

具体使用详情见: https://github.com/xmake-io/xmake-repo/issues/10#issuecomment-514023590

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX