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

admin 2022年4月28日09:11:50评论114 views字数 3572阅读11分54秒阅读模式
3000 字总结:Xmake 从入门到精通!
点击蓝字 关注我们
3000 字总结:Xmake 从入门到精通!

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


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


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


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


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


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


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


01
Xmake 的基础概念


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


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


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


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


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


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


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


02
Xmake 的基本指令


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


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


1.主菜单

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

xmake [task] [options] [target]

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

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

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

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

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

  • build:构建程序。

  • run:运行目标程序。

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

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

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

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

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

  • update:xmake 程序自更新。


2.build 子命令

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

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

xmake build --help

输出内容如下:

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

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

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

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

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


3.查看详细编译选项

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

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

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

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


4.config 子命令

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


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


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


  • 切换到调试编译模

xmake f -m debug

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

  • 切换编译输出目录

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

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

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

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

  • 添加 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 编译器。

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

  • 添加链接库和搜索路径

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

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

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

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

另外,我们也可以通过 --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 是否安装成功。

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

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

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

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

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

xmake f -c
xmake -rv

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

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


5.show 子命令

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

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

xmake show

显示的一些信息如下图:

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


6.update 子命令

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

xmake update -f

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

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

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

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


03
Xmake 入门课程


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


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


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


【敲重点】

本课程由 xmake 核心开发者亲自制作,扫码领取 3 日标准会员享八折福利


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

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



3000 字总结:Xmake 从入门到精通!
戳戳“阅读原文”直达课程页面!

原文始发于微信公众号(蓝桥云课精选):3000 字总结:Xmake 从入门到精通!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月28日09:11:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   3000 字总结:Xmake 从入门到精通!http://cn-sec.com/archives/951911.html

发表评论

匿名网友 填写信息