xmake
文章平均质量分 95
waruqi
个人主页:https://tboox.org
展开
-
Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试
新版本中,我们新增了 Xmake 自身源码的断点调试支持,这可以帮助贡献者更加快速的熟悉 xmake 源码,也可以帮助用户去快速调试分析自身项目的配置脚本。另外,我们xmake-repo同时,我们重点改进了 Wasm 的构建支持,以及 Qt6 for wasm 的支持。原创 2023-09-26 21:30:00 · 634 阅读 · 0 评论 -
Xmake v2.7.7 发布,支持 Haiku 平台,改进 API 检测和 C++ Modules 支持
Xmake 现在已经完全可以在Haiku 系统上运行,并且我们对 Xmake 新增了一个 haiku 编译平台,用于在 Haiku 系统上进行代码编译。原创 2023-02-24 10:09:48 · 358 阅读 · 0 评论 -
Xmake v2.7.6 发布,新增 Verilog 和 C++ Modules 分发支持
通过配置,我们能够自动拉取 iverilog 工具链包,然后使用自动绑定工具链来编译工程。原创 2023-01-27 18:35:38 · 902 阅读 · 0 评论 -
Xmake v2.7.3 发布,包组件和 C++ 模块增量构建支持
这个新特性主要用于实现从一个 C/C++ 包中集成特定的子库,一般用于一些比较大的包中的库组件集成。因为这种包里面提供了很多的子库,但不是每个子库用户都需要,全部链接反而有可能会出问题。sfml~foo和sfml~bar会作为两个独立的包,重复安装,占用双倍的磁盘空间也会重复编译一些共用代码,影响安装效率如果一个目标同时依赖了sfml~foo和sfml~bar,会存在链接冲突。原创 2022-11-08 12:09:57 · 616 阅读 · 0 评论 -
Xmake v2.7.2 发布,更加智能化构建第三方库
在先前的版本中,Xmake 提供了一种 TryBuild 模式,可以在没有 xmake.lua 的情况下,使用 Xmake 尝试对 autoconf/cmake/meson 等维护的第三方项目进行直接构建。其实,也就是让 Xmake 检测到对应的构建系统后,调用 cmake 等命令来实现,但是会帮助用户简化配置操作,另外还能对接 xmake 的交叉编译工具链配置。项目代码自身存在缺陷,导致编译错误项目代码不支持当前平台构建脚本存在缺陷缺少特定的配置参数缺少依赖库,需要用户手动安装。原创 2022-10-10 17:34:44 · 864 阅读 · 0 评论 -
Xmake v2.7.1 发布,更好的 C++ Modules 支持
这个版本我们对 C++20 Modules 的实现进行了重构和改进,改进了模块文件的依赖图解析,新增了对 STL 和 User HeaderUnits 的支持,同时让 CMakelists/compile_commands 生成器也支持了 C++ Modules。原创 2022-08-26 21:06:33 · 778 阅读 · 0 评论 -
Xmake v2.6.6 发布,分布式编译和缓存支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。原创 2022-05-25 22:48:19 · 295 阅读 · 0 评论 -
xmake v2.6.5 发布,远程编译支持
layout: post.cntitle: “xmake v2.6.5 发布,远程编译支持”tags: xmake lua C/C++ cargo rust remote-compilationcategories: xmakeXmake 是一个基于 Lua 的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门.原创 2022-04-25 14:58:53 · 1411 阅读 · 0 评论 -
Xmake 和 C/C++ 包管理
Xmake 是一个基于 Lua 的轻量级跨平台构建工具,关于 Xmake 与构建系统的介绍,我们已经在之前的文章中做了详细的介绍:C/C++ 构建系统,我用 xmake。如果大家已经对 Xmake 已经有了大概的了解,就会知道,它不仅仅是一个构建工具,还内置了对 C/C++ 包管理的支持,我们也可以把 Xmake 理解为:Xmake = Build backend + Project Generator + Package Manager经过几年的持续迭代,Xmake 对 C/C++ 包管理的支持不原创 2022-03-12 21:26:51 · 1867 阅读 · 0 评论 -
xmake v2.6.4 发布,大量包管理特性改进
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。原创 2022-03-07 14:15:20 · 260 阅读 · 0 评论 -
xmake v2.6.3 发布,支持 vcpkg 清单模式
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。原创 2022-01-23 22:23:09 · 648 阅读 · 0 评论 -
xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。原创 2021-12-17 23:27:16 · 922 阅读 · 0 评论 -
xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。这个版本,我们正式将默认的 Luajit 运行时切换到 Lua5.4 运行时,并且新增了 Rust 和 C++ 的混合编译支持,我们也集成了 Cargo 的包管理支持。另外,我们新增了一个实用的 utils.glsl2spv 规则,用于实现对 glsl原创 2021-12-04 10:35:10 · 775 阅读 · 0 评论 -
xmake v2.5.8 发布,新增 Pascal/Swig 程序和 Lua53 运行时支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。这个版本,我们主要增加了对 Pascal 语言项目和 Swig 模块的构建支持,而对于上个版本新增的 Vala 语言支持,我们也做了进一步改进,增加了对动态库和静态库的构建支持。除此之外,xmake 现在也已经支持了可选的 Lua5.3 运行时,提供更原创 2021-10-09 09:52:03 · 201 阅读 · 0 评论 -
xmake v2.5.9 发布,改进 C++20 模块,并支持 Nim, Keil MDK 和 Unity Build
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。这个版本,我们新增了很多新特性,不仅增加了对 Vala 和 Metal 语言的编译支持,另外我们还改进了包依赖管理,能够像 npm/package.lock 那样支持对依赖包的锁定和更新,使得用户的项目不会受到上游包仓库的更新变动影响。此外,我们还提供原创 2021-08-29 11:09:17 · 436 阅读 · 0 评论 -
xmake v2.5.5 发布,支持下载集成二进制镜像包
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。2.5.5 版本中,我们继续改进远程包集成的体验,实现在云端预编译包,然后直接下载集成预编译的二进制包。这对于一些编译非常慢的包,可以极大的减少包的安装时间。另外,新版本中,我们还重新实现了新版的本地包生成方案,完全无缝支持 add_requires原创 2021-07-01 13:56:29 · 322 阅读 · 0 评论 -
C/C++ 构建系统,我用 xmake
XMake 是什么XMake 是一个基于 Lua 的 现代化 C/C++ 构建系统。它的语法简洁易上手,对新手友好,即使完全不会 lua 也能够快速入门,并且完全无任何依赖,轻量,跨平台。同时,它也是一个自满足的构建系统,拥有强大的包管理系统,快速的构建引擎。相比 Ninja/Scons/Make 作为 Build backend,CMake/Meson 作为 Project Generator,那么 XMake 就是这两者外加一个包管理。xmake = Build backend + Proje原创 2021-05-06 09:58:33 · 835 阅读 · 0 评论 -
xmake v2.5.3 发布,支持构建 linux bpf 程序和 Conda 包集成
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。在 2.5.3 版本,我们新增了对 linux bpf 程序的构建支持,并且同时支持 android bpf 程序的构建。尽管 bpf 对 编译工具链有一定的要求,比如需要较新的 llvm/clang 和 android ndk 工具链,但是 xmak原创 2021-04-08 09:48:32 · 285 阅读 · 0 评论 -
xmake v2.5.2 发布, 支持自动拉取交叉工具链和依赖包集成
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。在 2.5.2 版本中,我们增加了一个重量级的新特性:自动拉取远程交叉编译工具链。这是用来干什么的呢,做过交叉编译以及有 C/C++ 项目移植经验的同学应该知道,折腾各种交叉编译工具链,移植编译项目是非常麻烦的一件事,需要自己下载对应工具链,并且配置工原创 2021-03-01 10:15:54 · 483 阅读 · 0 评论 -
LTUI v2.4 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库。此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端ui库。而样式风格基本上完全参照的kconfig-frontends,当然用户也可以自己定制不同的ui风格。另外,LTUI是完全跨平台的,windows上的terminal终端也是完全支持的,在windows上ltui会采用pdcurses来进行窗口绘制。Github更新内容新版本原创 2020-12-02 09:04:26 · 404 阅读 · 0 评论 -
Xrepo:一个现代化的跨平台 C/C++ 包管理器
xrepo 是一个基于 Xmake 的跨平台 C/C++ 包管理器。项目源码官方文档它基于 xmake 提供的运行时,但却是一个完整独立的包管理程序,相比 vcpkg/homebrew 此类包管理器,xrepo 能够同时提供更多平台和架构的 C/C++ 包。并且还支持多版本语义选择,另外它还是一个去中心化的分布式仓库,不仅仅提供了官方的 xmake-repo 仓库,还支持用户自建多个私有仓库。同时,xrepo 也支持从 vcpkg/homebrew/conan 等第三方包管理器中安装包,并提供原创 2020-11-25 09:49:22 · 873 阅读 · 0 评论 -
xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。在这个新版本中,我们对 Intel 系列的 C++ 和 Fortran 编译器做了全平台支持,并且改进了上个版本新加的 Wasm 工具链支持,同时对 Qt SDK for Wasm 也进行了支持。另外,我们还将 luajit 升级到最新的 v2.1 版原创 2020-10-18 09:47:04 · 505 阅读 · 1 评论 -
xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。随着 xmake 最近几年不断的迭代发展,xmake 已经在 Github 收获 2.9K star,300+ fork,30+ 贡献者,并且处理了 900+ issues,5400+ Commits,活跃用户也在不断增长。现在,xmake v2.3原创 2020-09-15 09:24:48 · 338 阅读 · 0 评论 -
xmake v2.3.6 发布, 新增fortran编译支持
这个版本重点对其他语言的支持做了一些改进,比如新增了fortran的编译支持,zig语言的实验性支持,另外对golang/dlang增加了第三方依赖包支持以及交叉编译支持。虽然,xmake重点关注c/c++的构建支持,但是其他语言的支持xmake也会不定期做一些改进,其主要目的并不是替代它们官方自身的构建系统,仅仅只是为了支持与c/c++的混合编译,更好的为c/c++项目服务,毕竟有些c/c++项目中,还是会偶尔调用其他语言的代码接口,比如与cuda, dlang, objc,swift, asm等语言原创 2020-07-29 09:35:48 · 316 阅读 · 0 评论 -
xmake从入门到精通12:通过自定义脚本实现更灵活地配置
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。本文主要详细讲解下,如何通过添加自定义的脚本,在脚本域实现更加复杂灵活的定制。项目源码官方文档配置分离xmake.lua采用二八原则实现了描述域、脚本域两层分离式配置。什么是二八原则呢,简单来说,大部分项目的配置,80%的情况下,都是些基础的常规配置,比如:add_cxflags, add_links等,只有剩下不到20%的地方才需要额外做些复原创 2020-07-24 13:32:35 · 515 阅读 · 0 评论 -
xmake v2.3.4 发布, 更加完善的工具链支持
为了让xmake更好得支持交叉编译,这个版本我重构了整个工具链,使得工具链的切换更加的方便快捷,并且现在用户可以很方便地在xmake.lua中扩展自己的工具链。关于平台的支持上,我们新增了对*BSD系统的支持,另外,此版本还新增了一个ninja主题风格,实现类似ninja的编译进度显示,例如:项目源码官方文档新特性介绍工具链改进工具链和平台完全分离之前的版本,平台和工具链绑定的过于紧密,例如xmake f -p windows 平台,默认只能使用msvc的编译,想要切到clang或者其他原创 2020-06-09 17:03:00 · 444 阅读 · 0 评论 -
xmake v2.3.1 发布, 无缝对接其他构建系统
最近对xmake内部做了不少的重构来改进,并且新增了不少实用的新特性,欢迎来体验。项目源码官方文档一些新特性:一键编译其他构建系统维护的项目,实现无缝对接,并且支持交叉编译(比如autotools的快速交叉编译,见下文详述)新增xmake project -k ninja工程生成插件,支持对build.ninja构建系统文件的生成一些改进点:改进命令行参数输入,支持...原创 2020-02-24 21:30:41 · 1153 阅读 · 1 评论 -
xmake v2.2.9 发布, 新增c 20 modules的实验性支持
这个版本没啥太大新特性,主要对c 20 modules进行了实验性支持,目前支持clang/msvc编译器,除此之外改进了不少使用体验,并且提高了一些稳定性。另外,这个版本新增了socket.io支持以及对应协程io的调度支持,为下个版本的远程编译,以及后续的分布式编译做准备。项目源码官方文档新特性介绍c 20 modulesc modules已经正式纳入了c 20...原创 2019-12-22 21:18:23 · 1203 阅读 · 0 评论 -
xmake从入门到精通10:多个子工程目标的依赖配置
xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。本文主要详细讲解下,如果在一个项目中维护和生成多个目标文件的生成,以及它们之间的依赖关系设置。项目源码官方文档target到底是什么?xmake的概念定义里,一个独立的项目工程可能会有多个子工程组织在一起,每个子工程对应只能生成一个唯...原创 2019-12-13 09:05:53 · 1387 阅读 · 0 评论 -
xmake从入门到精通9:交叉编译详解
xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。项目源码官方文档交叉编译工具链简介...原创 2019-12-08 21:00:31 · 2199 阅读 · 0 评论 -
跨平台c开发库tbox:内存库使用详解
TBOX是一个用c语言实现的跨平台开发库。针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了各个平台独有的一些特性进行优化。这个项目的目的,是为了使C开发更加的简单高效。源码仓库:https://github.com/tboox/tbox在线文档:https://tboox.io/#/...原创 2019-12-06 11:43:15 · 2144 阅读 · 0 评论 -
xmake从入门到精通8:切换编译模式
xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。本文我们会详细介绍下如何在项目构建过程中切换debug/release等常用构建模式,以及自定义其他编译模式。项目源码官方文档调试和发布模式通常,如果我们是通过xmake create命令创建的项目,会在xmake.lua里面自动添加...原创 2019-12-06 09:31:07 · 1356 阅读 · 0 评论 -
xmake新增智能代码扫描编译模式
最近给xmake增加了一个新特性,对于一份工程源码,可以不用编写makefile,也不用编写各种make相关的工程描述文件(例如:xmake.lua,makefile.am, cmakelist.txt等)xmake就可以直接编译他们,这是如何做到的呢,简单来说下实现原理:首先扫描当前目录下,xmake所以支持的所有源代码文件分析代码,检测哪些代码拥有main入口函数所有没有main入口的代码转载 2017-08-07 11:32:41 · 614 阅读 · 0 评论 -
不同编译器对预编译头文件的处理
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分转载 2017-08-07 11:31:25 · 772 阅读 · 0 评论 -
xmake v2.1.5版本新特性介绍
2.1.5版本现已进入收尾阶段,此版本加入了一大波新特性,目前正在进行稳定性测试和修复,在这里,先来介绍下新版本中引入了哪些新特性和改进。1. 提供类似cmake的find_*系列接口,实现各种查找,例如:find_package, find_library, find_file, ...2. 提供模块接口,实现编译器的各种检测,例如:has_features, has_flags, has_ci转载 2017-08-07 11:30:21 · 489 阅读 · 0 评论 -
使用xmake优雅地描述工程
描述语法xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述)、脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好。原创 2017-04-06 13:13:12 · 5425 阅读 · 0 评论 -
使用lua实现try-catch异常捕获
lua原生并没有提供try-catch的语法来捕获异常处理,但是提供了pcall/xpcall等接口,可在保护模式下执行lua函数。因此,可以通过封装这两个接口,来实现try-catch块的捕获机制。我们可以先来看下,封装后的try-catch使用方式:try{ -- try 代码块 function () error("error message") en转载 2016-12-14 23:41:05 · 13601 阅读 · 0 评论 -
如何快速构建一个简单的程序
首先我们通过内置的工程模板创建一个空工程:$ xmake create -P ./hellocreate hello ...create ok!这个时候xmake将会产生一些工程文件,如下:$ cd ./hello$ tree ..├── src│ └── main.c└── xmake.lua这个简单的程序仅仅只是为了打印输出: hello xmake!$ cat ./src/mai转载 2016-11-21 21:25:28 · 1155 阅读 · 0 评论 -
如何通过xmake进行交叉编译
xmake 提供了方便灵活的交叉编译支持,大部分情况下,都不需要配置很复杂的toolchains前缀,例如:arm-linux- 什么的只要这个toolchains目录满足如下结构(大部分的交叉工具链都是这个结构):/home/toolchains_sdkdir - bin - arm-linux-gcc - arm-linux-ld - ...转载 2016-11-17 16:06:26 · 1727 阅读 · 1 评论 -
xmake-vscode插件开发过程记录
最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发。我们先来看几张最后的效果图:语法高亮和自动补全状态栏要实现上面的效果,其实并不复杂,首先我们先来简单介绍下,vscode的插件开发的基本流程:安装插件开发环境安装cnpm由于国内环境比较复杂,直接用npm安装也许很慢或者转载 2017-10-12 15:04:19 · 903 阅读 · 0 评论