Xmake 2020 年终总结 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
waruqi
V2EX    程序员

Xmake 2020 年终总结

  •  2
     
  •   waruqi
    waruqi 2020-12-30 10:33:01 +08:00 5070 次点击
    这是一个创建于 1777 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2020 年,xmake 总共迭代发布了 9 个版本,新增了 1871 commits,1k+ stars,新增处理了 500+ 的 issues/pr 。

    简介

    还不知道 xmake 是什么的同学,这里先做个简单的介绍:

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt ,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

    虽然,简单易用是 xmake 的一大特色,但 xmake 的功能也是非常强大的,既能够像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,还有内置的包管理系统来帮助用户解决 C/C++依赖库的集成使用问题。

    目前,xmake 主要用于 C/C++项目的构建,但是同时也支持其他 native 语言的构建,可以实现跟 C/C++进行混合编译,同时编译速度也是非常的快,可以跟 Ninja 持平。

    日活破 100

    5 年了,终于破 100 了(好悲催~),但相比去年已经算是有了很大的增长,每天最多有 113 人,304 个工程在使用 xmake 进行构建。

    上线官方课程

    今年还上线了一门 xmake 相关的入门课程:Xmake 带你轻松构建 C/C++ 项目

    发布独立的 C/C++ 包管理器 (Xrepo)

    今年,xmake 对包管理的集成使用做了很大的改进和完善,为了方便日常管理维护依赖包,我们新增了独立的 C/C++ 包管理工具 Xrepo 可以快速安装 C/C++ 依赖包

    上线 xrepo 包文档站

    同时,我们还上线了 xrepo 包的 文档站, 我们可以在上面快速检索每个包的使用和集成方式,以及查看当前支持的平台列表和安装方式。

    官方 xmake-repo 仓库新增 200+ 常用包

    非常感谢各位 xmake 的贡献者,使得 xmake-repo 仓库在今年新增了 200+ 的常用 C/C++ 包,我们可以很方便的在项目中快速集成使用它们。

    虽然里面的包还是很少,但是没有关系,xmake 也支持直接集成 vcpkg/conan/clib/homebrew/dub/pacman 等其他的管理仓库中的 C/C++ 包。

    add_requires("tbox >1.6.1", "libuv master") add_requires("vcpkg::ffmpeg", {alias = "ffmpeg"}) add_requires("brew::pcre2/libpcre2-8", {alias = "pcre2"}) add_requires("conan::openssl/1.1.1g", {alias = "openssl"}) target("test") set_kind("binary") add_files("src/*.c") add_packages("tbox", "libuv", "ffmpeg", "pcre2", "openssl") 

    今年 xmake 的一些新增特性

    今年,我们也对 xmake 做了很多的迭代改进,新增了不少实用的新特性,例如:

    • 改进依赖包集成体验,并新增依赖包的 license 自动检测机制
    • 增加对 Intel 编译工具链的支持
    • 增加对 Zig,Fortran 等其他语言项目的编译支持
    • 增加对 Wasm 工具链以及 Qt for wasm 项目的编译支持
    • 重构了整个工具链模块,实现更加方便的自定义工具链,更加快速灵活的工具链切换
    • 新增 iOS/MacOS App 应用程序,Frameworks 和 bundle 程序的编译支持,可以完全脱离 xcodebuild,也能从源码编译生成 ipa 包
    • 对 xmake 的整体构建速度进行了大提速,编译速度完全媲美 ninja
    • 新增了 build.ninja 工程文件生成,并对现有 vs/vsxmake 工程进行了很多的改进
    • 新增 try-build 构建模式,可以使用 xmake 直接编译第三方构建系统的项目,例如直接编译 cmake, ninja, gn, autotools, android.mk 等维护的项目,同时还能支持交叉编译环境的自动配置
    • 重构支持了 socket/pipe/process + 协程 进行统一调度,为下一步跨平台分布式编译做准备

    其他细节特性和改进还有很多,我就不一一列举了。

    Xmake Discord 社区频道上线

    Discord (discord.com) 是一个非常不错的全端即时交流平台,为了更好地和国内外用户进行即时交流,我们在上面创建了中文和英文两个不同的频道,界面大概长这样。

    对 xmake 感兴趣的朋友可以点击 服务器邀请链接 加入我们的频道,当然话题仅限于 xmake 相关项目。

    新一年的目标

    • 改进和完善现有 C/C++包管理集成
    • xmake-repo 仓库新增收录 1000+ 的常用包
    • 实现跨平台的分布式编译
    • 重写 xmake-idea 插件

    最后,再晒张我个人今年在开源上的总体贡献图,明年继续~

    有对 xmake 感兴趣的朋友,欢迎关注我们,请戳这: https://github.com/xmake-io/xmake

    38 条回复    2021-01-06 16:37:02 +08:00
    dexter
        1
    dexter  
       2020-12-30 10:40:08 +08:00
    5 年,不容易。。。。
    lewis89
        2
    lewis89  
       2020-12-30 10:41:41 +08:00
    @dexter #1 社区太小了,中文圈子里面 有闲又有技术愿意干这个事情的人太少 实际上大家都是在用 cmake
    waruqi
        3
    waruqi  
    OP
       2020-12-30 10:49:51 +08:00
    @lewis89 是的,愿意干这个的很少 纯当兴趣吧,不过 xmake 还是挖走了不少 premake 的用户,哈~
    airqj
        4
    airqj  
       2020-12-30 11:21:01 +08:00
    以前写 C 的时候好像还了解过
    支持一下
    airqj
        5
    airqj  
       2020-12-30 11:21:35 +08:00   1
    已 star :)
    waruqi
        6
    waruqi  
    OP
       2020-12-30 11:24:20 +08:00 via Android
    @airqj 谢谢
    icyalala
        7
    icyalala  
       2020-12-30 11:27:19 +08:00
    CMake 已经是事实标准了。
    即使强大如 google,自己也有一堆包管理和构建工具,发个开源项目也不得不带上个 CMake 支持。

    精神上支持一下楼主,这么长时间坚持不断迭代,很有毅力和耐心。
    CismonX
        8
    CismonX  
       2020-12-30 11:51:37 +08:00 via iPhone
    看楼主的代码提交记录很高产啊,光是 GitHub 上面提交的代码就比我工作和业余时间写的代码加起来都要多了
    waruqi
        9
    waruqi  
    OP
       2020-12-30 12:01:17 +08:00
    @icyalala 其实并不冲突,可以 cmake 为主,xmake 为辅,对于一些个人的临时小项目,或者编译测试验证一些代码,用 xmake 效率更高些。

    另外,xmake 也支持生成 cmakelist.txt ,用 xmake 维护的项目,同样可以很好的支持 cmake 编译,以及插件集成。
    stdout
        10
    stdout  
       2020-12-30 16:22:22 +08:00
    支持,n 年前我也想写个类似的工具,直接烂尾了。c 相关库的非常缺一个包管理的工具。
    waruqi
        11
    waruqi  
    OP
       2020-12-30 16:36:15 +08:00   1
    @stdout 那可以试试 xmake,自带 xrepo 包管理工具,无缝集成各种 c/c++ 包。 刚随手搞了个集成 raylib 库的 hello world 工程,基于 xmake 的包依赖管理,可以体验下。https://github.com/waruqi/raylib-scaffold
    eaglu
        12
    eaglu  
       2020-12-30 18:33:17 +08:00   1
    写 C/C++的时候一直在用,也安利给同学了
    waruqi
        13
    waruqi  
    OP
       2020-12-30 19:05:33 +08:00 via Android
    @eaglu 谢谢
    paoqi2048
        14
    paoqi2048  
       2020-12-30 19:38:44 +08:00
    已经 star 挺久了,准备试水下 LZ 这个
    Jabin
        15
    Jabin  
       2020-12-30 20:00:54 +08:00 via Android
    关注了一段时间 马上就会用到
    waruqi
        16
    waruqi  
    OP
       2020-12-30 20:29:53 +08:00 via Android
    @paoqi2048
    @Jabin 欢迎试用
    nightwitch
        17
    nightwitch  
       2020-12-30 20:44:54 +08:00
    Cmake 大势已成,很难再有颠覆性的工具了,不过可以挤压一下 premake, meson 等工具的生存空间。
    关注这个项目很久了,更新的频率一直很及时,精神上支持一下,有机会在自己的小工程里试用一下
    carlself
        18
    carlself  
       2020-12-30 20:55:57 +08:00
    discord 截图看到我了,xmake 非常容易上手,并且作者解决问题的速度很快。
    waruqi
        19
    waruqi  
    OP
       2020-12-30 22:01:21 +08:00 via Android
    @nightwitch cmake 生态在那,是很难颠覆,所以 xmake 可以作为补充,在一些小项目中使用 可以提高些效率
    waruqi
        20
    waruqi  
    OP
       2020-12-30 22:01:43 +08:00 via Android
    @carlself 哈哈
    neilp
        21
    neilp  
       2020-12-30 22:07:50 +08:00
    必须赞
    interim
        22
    interim  
       2020-12-30 22:15:21 +08:00
    支持一下!很棒的项目
    waruqi
        23
    waruqi  
    OP
       2020-12-30 22:33:50 +08:00
    @chnyuwen
    @neilp 谢谢支持
    Jirajine
        24
    Jirajine  
       2020-12-30 22:43:38 +08:00 via Android
    一直在用,拿来写点小项目很方便,就是 vscode 插件比起 cmake 的还差一些,没和内置的 task/launch 集成,而且调试前得先手动点编译,希望能改进一下。
    waruqi
        25
    waruqi  
    OP
       2020-12-30 23:16:18 +08:00 via Android
    @Jirajine 调试前编译可以改进 你可以提个 issue 上来,现在 run/debug 已经是内置集成 task/launch 的
    bbxiong
        26
    bbxiong  
       2020-12-30 23:24:21 +08:00   1
    支持,这种项目需要常年坚持,很棒的项目
    Jirajine
        27
    Jirajine  
       2020-12-30 23:27:48 +08:00 via Android
    @waruqi 我用的时候看到它在底栏添加了自己的编译 /运行 /调试的按钮。应该使用 vscode 自己提供的那一套,自动生成恰当的 task/launch,按 f5 或者点 vscode 调试侧栏里的调试按钮,没必要单独弄,底栏只留状态信息和切换配置的功能就行了。
    waruqi
        28
    waruqi  
    OP
       2020-12-31 00:00:52 +08:00
    @Jirajine 这块也是参考了早期的 cmake tools 插件做法,回头有时间 也可以考虑改进
    zhidian
        29
    zhidian  
       2020-12-31 00:29:53 +08:00
    楼主加油。(虽然我没有用过

    刚才看到 vscode 插件,里面提到用 compileCommands 来激活 vsode 的补全。试了一下靠谱。
    我之前都用 cmake 打印全部 include path 然后粘贴进去( cmake 插件不好使)。

    现在我们用 cmake + conan 管理 c++ 包。主要是因为公司用 artifactory,自带 conan 服务。不知道楼主有没有提供私有仓库的方案。感觉是一个不错的突破点。
    waruqi
        30
    waruqi  
    OP
       2020-12-31 06:48:51 +08:00 via Android
    @zhidian 私有包已经支持的哦 可以自建私有包仓库,也可以在内网部署整个仓库,哪怕不访问外网 或者无网都可以 只需要调整下包里面 set_urls 地址为内网 url 或者本地文件就行
    Cbdy
        31
    Cbdy  
       2020-12-31 08:47:58 +08:00 via Android
    还在手写 Makefile 的路过
    kaka6
        32
    kaka6  
       2020-12-31 09:15:22 +08:00
    支持一下,了不起
    itfanr
        33
    itfanr  
       2020-12-31 09:28:12 +08:00
    @icyalala 关键人家还是业务搞的
    waruqi
        34
    waruqi  
    OP
       2020-12-31 10:14:25 +08:00 via Android
    @Cbdy 那可以试试 可以节省些撸 makefile 的时间
    songtinhuang
        35
    songtinhuang  
       2020-12-31 14:16:39 +08:00
    visual studio code 的 includepath 怎么与 xmake 集成设置?
    include 那里总是有红色波浪线很头疼。
    waruqi
        36
    waruqi  
    OP
       2020-12-31 18:15:26 +08:00 via Android
    @songtinhuang 看下里面的设置说明 配置 complie_commands.json

    https://github.com/xmake-io/xmake-vscode/issues/40#issuecomment-657171811
    pythonee
        37
    pythonee  
       2021-01-06 09:50:12 +08:00
    支持基础工作。
    好奇个人怎么有精力管理软件包仓库
    waruqi
        38
    waruqi  
    OP
       2021-01-06 16:37:02 +08:00 via Android
    @pythonee 大部分都是 xmake 用户帮忙贡献的,因为如果用户要用到 xmake 去集成使用依赖库,如果仓库里面没有,虽然可以走 conan/vcpkg 的包来集成,但还是会有一些用户会根据自己的需求,自发的帮忙提交包进来

    所以只要 xmake 用户够多,xmake-repo 仓库的包维护不成问题,目前里面已经收录 283 个包,其中一大半都是用户帮忙提交进来的,同时他们也会根据自己的需求,针对性的帮忙更新维护需要的包
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5558 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:23 PVG 11:23 LAX 19:23 JFK 22:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86