3000 字总结:Xmake 从入门到精通!

d9fd9820371df347980fe6ca7e7f75ea.png

点击蓝字 关注我们

f3dbbfbc12779324ad47f880018a61c5.png

很多小伙伴都知道,C/C++ 程序的构建过程是比较繁琐的。

如果我们不借助 IDE 工具,很难快速地构建一个新的 C/C++ 程序。如果想要跨平台构建,那就更加麻烦了。

a5c6a5f058a1005d2a31f3903f09c3d7.png

虽然 IDE 工具功能很强大,也很好用,但总归不是完美的,还是存在很多不足的,比如跨平台开发支持不完善、不够灵活、定制化配置构建过程存在一定的局限性等。

所以在 C/C++ 构建时,我会选择简单易用的 Xmake 。

a0bba7c52bdbc9784ac3ebb4369dc21d.png

接下来,我就来好好说说 Xmake 的那些事儿。

01

Xmake 的基础概念

Xmake 是一个基于 Lua 的轻量级跨平台 C/C++ 构建工具,使用 xmake.lua 维护项目构建。

相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,让用户把更多的精力集中在实际的项目开发上。

虽然简单易用是 xmake 的一大特色,但 xmake 的功能也非常强大。

既能够像 make/ninja 那样直接编译项目,也可以像 cmake/meson 那样生成工程文件,还有内置的包管理系统帮助用户解决 C/C++ 依赖库的集成使用问题。

b166cad46acf5abc5c598d4f8a7b6e75.png

目前,Xmake 已经在 Github 收获 2.9K star、300+ fork,30+ 贡献者,并且处理了 900+ issues 、 5400+ Commits,star 数已经赶超大部分同类构建工具,逐渐逼近 cmake ,现在已经有越来越多的用户开始使用 Xmake 。

e991d642fb69e09df42b4210247d8003.png

02

Xmake 的基本指令

在介绍 xmake 命令行程序的各种子命令前,我们先介绍下 xmake 的 help 菜单,所有 xmake 命令参数都是可以从这个菜单中找到,并且有相应的描述和参数值说明。

因此,在还不熟悉怎么使用某个子命令的时候,都可以通过查看对应的帮助菜单里面的参数说明,来快速找到想要的某个设置参数的使用方式。

1.主菜单

xmake 的整个命令行格式如下:

xmake [task] [options] [target]

主要由 [task][options] 、 [target] 组成,其中 [] 部分表示可选输入。

里面的 task 就是子命令任务名,xmake 提供了很多的内置子命令以及插件任务子命令,可以通过执行 xmake --help 在主菜单里面查看具体有哪些子命令,整个主菜单的列表内容如下:

9979e83504d04772a1cb46b0d94dfedc.png

  • config:配置编译需要的参数,比如平台、架构等。

  • global:全局配置编译参数。

  • build:构建程序。

  • run:运行目标程序。

  • install:安装编译后的目标程序。

  • uninstall:卸载之前安装的程序文件。

  • package:打包编译生成的库和头文件。

  • clean:清理编译过程中生成的临时文件。

  • require:手动拉取第三方依赖库。

  • update:xmake 程序自更新。

2.build 子命令

build 子命令也就是默认的构建命令,由于这个命令最常用,因此即使用户不完整运行 xmake build,仅仅执行 xmake 就可以编译项目,两者是完全等价的。

如果我们要查看构建命令具体有哪些参数选项,可以执行下面的命令来查看,参数列表如下:

xmake build --help

输出内容如下:

58cba6c42c1bdf121194c4d711e644ed.png

  • -v/--verbose:查看详细完整的编译命令。

  • -r/--rebuild:强制重新编译所有代码。

  • -j/--jobs:指定多任务编译的并行任务数。

  • -w/--warning:编译过程中显示编译警告信息。

3.查看详细编译选项

通过添加 -v 参数,在编译过程中,查看完整的编译选项,这是非常有用的。

它可以排查和确认设置的编译选项是否生效,我们可以进入之前的 hello 项目中执行下面的命令。

xmake -rv

这里我们还同时追加 -r 选项,-r 和 -v 可以组合在一起变成 -rv 同时生效(这是由于 xmake 采用的是 unix 的命令参数风格),也就是重新编译并且显示详细命令输出,具体效果如图:

fa333e93eb8982dd0ecc511c90ff2dc3.png

4.config 子命令

config 子命令主要用于在编译前,对项目进行一些参数配置,比如切换平台、架构以及编译模式等。

它可用于修改编译过程中的各种行为,当然里面很多配置是可以直接在 xmake.lua 中配置来永久生效的。不过这里通过配置命令,也可以针对当前编译临时生效,配置结果也会被缓存。

【注意】每次的配置都是完整配置,会完全覆盖上一次的配置结果。

  • 切换到调试编译模
xmake f -m debug

需要提示的一点是,xmake f 是 xmake config 的简写,用来简化输入提高效率,其它子命令也都是有简写的,大家可以在帮助菜单中查看。

  • 切换编译输出目录

默认编译 xmake 会在当前项目根目录下生成 build 子目录作为编译输出目录,如果不想生成到当前目录下,我们可以通过下面的配置命令切换到其它输出目录下:

2799a087787044bd56e11bbaf08ae709.png

如果配置成功,通过下面的命令查看当前的配置信息,确认是否生效。

7fd306f5bd8827a6fea781ae1fdb9d40.png

  • 添加 C/C++ 编译选项

通过配置命令,我们可以在命令行中快速添加一些自定义的 C/C++ 编译选项,其中主要涉及这三个选项:

--cflags:仅仅添加 C 编译选项。

--cxxflags:仅仅添加 C++ 编译选项。

--cxflags:同时添加 C/C++ 编译选项。

如果你的项目中既有 C 代码,也有 C++ 代码,那么使用 --cxflags 来同时设置会更加方便,使用方式如下:

xmake f --cxflags="-DTEST"xmake -rv

我们通过执行 xmake -rv 强制重新编译并且显示详细输出,来确认是否添加生效,下图红框部分中的 -DTEST 说明我们添加的 TEST 宏定义确实传入了 gcc 编译器。

bb2ae5fb44aefe62a0f1a1f1b43a97eb.png

  • 添加链接库和搜索路径

除了 C/C++ 代码编译,最后的链接器阶段的选项,我们也可以通过 --ldflags 命令参数添加设置,例如。

xmake f --ldflags="-L/tmp -lpthread"xmake -rv

通过添加额外的 pthread 链接库,同时新增了 /tmp 的库搜索目录,最后生效的效果如下:

3aff4c45d1d62a54845fee718fdffb34.png

另外,我们也可以通过 --links 和 --linkdirs 达到同样的效果。

xmake f --links="pthread" --linkdirs="/tmp"xmake -rv
  • 切换到 clang 编译器

默认情况下,在 Linux 环境中,xmake 会优先使用 gcc 编译器,不过我们也可以很方便地切换使用其它的编译器,比如 clang,不过在使用 clang 编译器之前,需要执行下面的命令安装它。

sudo apt update
sudo apt install -y clang

安装完成后,执行 clang --version 命令来确认 clang 是否安装成功。

a1f53523cde8f3c4ba05398f3f75cd2e.png

如果安装成功,执行下面的命令切换到 clang 编译工具链,然后执行编译。

xmake f --toolchain=clang
xmake -rv
  • 重置所有配置

经过之前的一些配置,我们缓存了不少编译配置,如果想重置所有配置到最初的默认状态,那么可以添加 -c 选项来重置所有。

默认配置下,也就是 release 编译模式,会忽略本地的配置缓存,像之前的编译输出路径、新增的编译选项配置都会被忽略。

xmake f -c
xmake -rv

重置配置后,我们重新编译当前工程,可以看下里面的详细编译选项,已经完全还原回去了,刚刚设置的 clang 编译器重新变成了 gcc 编译器。

05cc256d7c4359b8fad6424af60be1c3.png

5.show 子命令

我们可以使用此命令,查看当前工程的基本信息,以及 xmake 自身的一些基本信息,这通常是非常有用的。

比如可以知道当前项目有哪些目标程序,当前的编译架构和模式是什么,以及 xmake 的临时目录、缓存目录和安装路径在哪里等。

xmake show

显示的一些信息如下图:

e8c4baa339f1ee3a355af9434ae21e1b.png

6.update 子命令

如果 xmake 有新版本发布,我们可以使用自更新命令快速更新版本,只需要执行下面的命令。

xmake update -f

这里我们额外加上了 -f/--force 参数,这是因为我们当前环境的 xmake 已经是最新版本,通常不需要更新,为了演示这个更新操作,我们通过这个参数来强制重新更新一遍当前的最新版本。

306bb1f739f8b5ffebc96d63a02be5ad.png

更新完成后,我们可以继续执行 xmake --version 确认下版本是否为最新版本,实际的版本号由于时间关系,会有所变动,毕竟 xmake 的版本迭代还是挺频繁的。

c404e40daf4d91180b8d15c288fa02ec.png

03

Xmake 入门课程

蓝桥云课《Xmake 带你轻松构建 C&C++ 项目》可以带你轻松入门,不需要学习复杂的 makefile 语法,即使是零基础的 C/C++ 初学者,也可以通过本课程快速入门 C/C++ 项目的编译开发。

a698e827c782cfd3b032bb13e26a1ca6.png

另外本课程还提供了实战操作带你一步步了解如何编译移植第三方 C/C++ 项目,以及如何使用 VSCode + Qt 进行可视化编译开发和调试。

【敲重点】本课程由 xmake 核心开发者亲自制作,1 月 3 日前扫码添加小蓝,即可六四学习

▼扫码添加小蓝领取福利▼

afd08f6e7dce7c8851a29b2319453a6e.png923193a417750e9e9836e1503e2fb978.png73f4381c50f6ca4d149f555b52045c94.png

5e10e1b2eed24266f4b6ba16a44563f8.gif

戳戳“阅读原文”直达课程页面!

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值