很多小伙伴都知道,C/C++ 程序的构建过程是比较繁琐的。
如果我们不借助 IDE 工具,很难快速地构建一个新的 C/C++ 程序。如果想要跨平台构建,那就更加麻烦了。
虽然 IDE 工具功能很强大,也很好用,但总归不是完美的,还是存在很多不足的,比如跨平台开发支持不完善、不够灵活、定制化配置构建过程存在一定的局限性等。
所以在 C/C++ 构建时,我会选择简单易用的 Xmake 。
接下来,我就来好好说说 Xmake 的那些事儿。
Xmake 是一个基于 Lua 的轻量级跨平台 C/C++ 构建工具,使用 xmake.lua 维护项目构建。
相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,让用户把更多的精力集中在实际的项目开发上。
虽然简单易用是 xmake 的一大特色,但 xmake 的功能也非常强大。
既能够像 make/ninja 那样直接编译项目,也可以像 cmake/meson 那样生成工程文件,还有内置的包管理系统帮助用户解决 C/C++ 依赖库的集成使用问题。
目前,Xmake 已经在 Github 收获 2.9K star、300+ fork,30+ 贡献者,并且处理了 900+ issues 、 5400+ Commits,star 数已经赶超大部分同类构建工具,逐渐逼近 cmake ,现在已经有越来越多的用户开始使用 Xmake 。
在介绍 xmake 命令行程序的各种子命令前,我们先介绍下 xmake 的 help 菜单,所有 xmake 命令参数都是可以从这个菜单中找到,并且有相应的描述和参数值说明。
因此,在还不熟悉怎么使用某个子命令的时候,都可以通过查看对应的帮助菜单里面的参数说明,来快速找到想要的某个设置参数的使用方式。
1.主菜单
xmake 的整个命令行格式如下:
xmake [task] [options] [target]
主要由 [task]
、[options]
、 [target]
组成,其中 []
部分表示可选输入。
里面的 task 就是子命令任务名,xmake 提供了很多的内置子命令以及插件任务子命令,可以通过执行 xmake --help
在主菜单里面查看具体有哪些子命令,整个主菜单的列表内容如下:
-
config
:配置编译需要的参数,比如平台、架构等。 -
global
:全局配置编译参数。 -
build
:构建程序。 -
run
:运行目标程序。 -
install
:安装编译后的目标程序。 -
uninstall
:卸载之前安装的程序文件。 -
package
:打包编译生成的库和头文件。 -
clean
:清理编译过程中生成的临时文件。 -
require
:手动拉取第三方依赖库。 -
update
:xmake 程序自更新。
2.build 子命令
build 子命令也就是默认的构建命令,由于这个命令最常用,因此即使用户不完整运行 xmake build
,仅仅执行 xmake
就可以编译项目,两者是完全等价的。
如果我们要查看构建命令具体有哪些参数选项,可以执行下面的命令来查看,参数列表如下:
xmake build --help
输出内容如下:
-
-v/--verbose
:查看详细完整的编译命令。 -
-r/--rebuild
:强制重新编译所有代码。 -
-j/--jobs
:指定多任务编译的并行任务数。 -
-w/--warning
:编译过程中显示编译警告信息。
3.查看详细编译选项
通过添加 -v
参数,在编译过程中,查看完整的编译选项,这是非常有用的。
它可以排查和确认设置的编译选项是否生效,我们可以进入之前的 hello 项目中执行下面的命令。
xmake -rv
-r
选项,-r
和 -v
可以组合在一起变成 -rv
同时生效(这是由于 xmake 采用的是 unix 的命令参数风格),也就是重新编译并且显示详细命令输出,具体效果如图:4.config 子命令
config 子命令主要用于在编译前,对项目进行一些参数配置,比如切换平台、架构以及编译模式等。
它可用于修改编译过程中的各种行为,当然里面很多配置是可以直接在 xmake.lua 中配置来永久生效的。不过这里通过配置命令,也可以针对当前编译临时生效,配置结果也会被缓存。
【注意】每次的配置都是完整配置,会完全覆盖上一次的配置结果。
-
切换到调试编译模式
xmake f -m debug
需要提示的一点是,xmake f
是 xmake config
的简写,用来简化输入提高效率,其它子命令也都是有简写的,大家可以在帮助菜单中查看。
-
切换编译输出目录
默认编译 xmake 会在当前项目根目录下生成 build 子目录作为编译输出目录,如果不想生成到当前目录下,我们可以通过下面的配置命令切换到其它输出目录下:
如果配置成功,通过下面的命令查看当前的配置信息,确认是否生效。
-
添加 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 编译器。
-
添加链接库和搜索路径
除了 C/C++ 代码编译,最后的链接器阶段的选项,我们也可以通过 --ldflags
命令参数添加设置,例如:
xmake f --ldflags="-L/tmp -lpthread"xmake -rv
通过添加额外的 pthread 链接库,同时新增了 /tmp
的库搜索目录,最后生效的效果如下:
另外,我们也可以通过 --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 是否安装成功。
如果安装成功,执行下面的命令切换到 clang 编译工具链,然后执行编译。
xmake f --toolchain=clang
xmake -rv
-
重置所有配置
经过之前的一些配置,我们缓存了不少编译配置,如果想重置所有配置到最初的默认状态,那么可以添加 -c
选项来重置所有。
默认配置下,也就是 release 编译模式,会忽略本地的配置缓存,像之前的编译输出路径、新增的编译选项配置都会被忽略。
xmake f -c
xmake -rv
重置配置后,我们重新编译当前工程,可以看下里面的详细编译选项,已经完全还原回去了,刚刚设置的 clang 编译器重新变成了 gcc 编译器。
5.show 子命令
我们可以使用此命令,查看当前工程的基本信息,以及 xmake 自身的一些基本信息,这通常是非常有用的。
比如可以知道当前项目有哪些目标程序,当前的编译架构和模式是什么,以及 xmake 的临时目录、缓存目录和安装路径在哪里等。
xmake show
显示的一些信息如下图:
6.update 子命令
如果 xmake 有新版本发布,我们可以使用自更新命令快速更新版本,只需要执行下面的命令。
xmake update -f
这里我们额外加上了 -f/--force
参数,这是因为我们当前环境的 xmake 已经是最新版本,通常不需要更新,为了演示这个更新操作,我们通过这个参数来强制重新更新一遍当前的最新版本。
更新完成后,我们可以继续执行 xmake --version
确认下版本是否为最新版本,实际的版本号由于时间关系,会有所变动,毕竟 xmake 的版本迭代还是挺频繁的。
蓝桥云课《Xmake 带你轻松构建 C&C++ 项目》可以带你轻松入门,不需要学习复杂的 makefile 语法,即使是零基础的 C/C++ 初学者,也可以通过本课程快速入门 C/C++ 项目的编译开发。
另外本课程还提供了实战操作带你一步步了解如何编译移植第三方 C/C++ 项目,以及如何使用 VSCode + Qt 进行可视化编译开发和调试。
【敲重点】
本课程由 xmake 核心开发者亲自制作,扫码领取 3 日标准会员享八折福利!
▼扫码添加小蓝领取福利▼
原文始发于微信公众号(蓝桥云课精选):3000 字总结:Xmake 从入门到精通!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论