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

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

  •  2
     
  •   waruqi ·
    waruqi · 2019-07-12 08:04:37 +08:00 · 6626 次点击
    这是一个创建于 1994 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 关注此项目。

    26 条回复    2019-07-23 10:23:45 +08:00
    ResetTrap
        1
    ResetTrap  
       2019-07-12 08:40:18 +08:00
    支持一下
    soli
        2
    soli  
       2019-07-12 09:13:24 +08:00
    支持!
    zjsxwc
        3
    zjsxwc  
       2019-07-12 09:17:25 +08:00
    试了下,应该是用的人少,不爽

    比如我要用 boost,xmake 找不到

    cmake 由于大家都认同,所有 apt install libXXX 后,会带上 `XXXConfig.cmake ` 或 `FindXXX.cmake`,舒服
    waruqi
        4
    waruqi  
    OP
       2019-07-12 09:21:24 +08:00
    @zjsxwc 内置仓库确实还没有 boost,不过 xmake 也支持直接集成使用 vcpkg/conan/brew 的包,里面有 boost,照样可用。。

    apt install 到系统的库,通过 find_packages("xxx") 照样可以直接使用,也有类似`find_xxx.lua`的处理逻辑,可以定制化支持。
    V4Exp
        5
    V4Exp  
       2019-07-12 09:24:40 +08:00
    能支持在 VS 中创建 Linux 项目就用。
    stebest
        6
    stebest  
       2019-07-12 09:26:19 +08:00
    已 star
    waruqi
        7
    waruqi  
    OP
       2019-07-12 09:31:38 +08:00
    @V4Exp xmake 自身是支持交叉编译的,只要 win 上有 linux 编译工具链,就能编译 linux 项目

    而 xmake 也支持支持生成 vs 工程,下个版本还会支持 vs 中集成 xmake 来使用,只要 win 装有 linux 的交叉编译工具链,那么之后新版本生成的 vs 工程,调用 xmake 编译的时候,就可以在 vs 中切到对应 linux 工具链编译 linux 项目。。
    abcbuzhiming
        8
    abcbuzhiming  
       2019-07-12 09:34:13 +08:00
    @waruqi 楼主,请问你第一张结构示意图是用什么软件画的
    V4Exp
        9
    V4Exp  
       2019-07-12 09:42:48 +08:00
    @waruqi 最理想的效果是和 VS linux 项目差不多,可以连接远程机器进行部署调试。
    VS 自带的 Linux 项目实际使用中体验不是很好,有 Bug。这个要求会不会太高了?
    waruqi
        10
    waruqi  
    OP
       2019-07-12 09:46:29 +08:00   ❤️ 1
    @V4Exp xmake 只是个构建工具,不是 ide,对应提供的 ide/编辑器集成插件,目前还没法做到远程部署和调试。。

    不过 vscode-xmake 的那个插件,目前支持在 vscode 中与 xmake 进行集成编译,以及断点调试。。
    waruqi
        11
    waruqi  
    OP
       2019-07-12 09:46:48 +08:00
    glfpes
        12
    glfpes  
       2019-07-12 09:53:51 +08:00
    腾讯的 blade 有用的吗?也是一种选择。
    0226
        13
    0226  
       2019-07-12 10:01:26 +08:00
    难道不是 Bazel 吗
    waruqi
        14
    waruqi  
    OP
       2019-07-12 10:09:45 +08:00
    @glfpes
    @0226 其他的构建工具也都不错,各有优劣,可自己试用对比下
    congeec
        15
    congeec  
       2019-07-12 10:11:25 +08:00 via iPhone
    @waruqi 我看你坚持推广好几年了,真不容易
    waruqi
        16
    waruqi  
    OP
       2019-07-12 10:13:39 +08:00
    @congeec 我也就每隔 3、4 个月,以及发新版的时候偶尔推一下。。 = =
    eliteYang
        17
    eliteYang  
       2019-07-12 10:45:30 +08:00   ❤️ 1
    开源项目不易,支持一下
    waruqi
        18
    waruqi  
    OP
       2019-07-12 11:14:11 +08:00
    @eliteYang 多谢支持
    doing1
        19
    doing1  
       2019-07-12 11:16:26 +08:00
    好崇拜会写代码的人,感觉好聪明的样子
    marknote
        20
    marknote  
       2019-07-12 11:18:28 +08:00 via iPhone
    顶一个!已 star
    iwtbauh
        21
    iwtbauh  
       2019-07-12 13:08:32 +08:00 via Android
    其实 Makefile 足够了,如果能使用 GNU make 扩展的话。很舒服。

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

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

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

    xmake 的文档我看了看,但是也没有能提起来我兴趣的地方。
    gerorim
        22
    gerorim  
       2019-07-12 13:18:10 +08:00
    习惯使用 makefile
    支持一下,有机会在项目中试试
    waruqi
        23
    waruqi  
    OP
       2019-07-12 13:35:09 +08:00
    @iwtbauh 这个就看个人喜好了。比如我,对 autotools 之类的就是深恶痛觉,没感觉一丁点好的地方,所以才折腾了 xmake。。
    llbgurs
        24
    llbgurs  
       2019-07-12 13:44:12 +08:00
    waruqi
        26
    waruqi  
    OP
       2019-07-23 10:23:45 +08:00   ❤️ 1
    @zjsxwc 内建的 boost 库支持我加上了,你可以试试

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

    具体使用详情见: https://github.com/xmake-io/xmake-repo/issues/10#issuecomment-514023590
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1050 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:39 · PVG 06:39 · LAX 14:39 · JFK 17:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.