XMake,你的 SDL2 项目打包好帮手
XMake 是由国人开发的基于 Lua 的 C/C++ 构建系统,支持多重编译器和平台,利用 Lua 轻量、简洁、灵活、跨平台等特性,带来不一样的构建体验。
请注意:不建议使用除 vscode 以外的编辑器使用 XMake 编写项目,这些编辑器有 XMake 插件但并不好用,没有办法提供合适的 include 解析,导致编写代码十分的困难,好在我们现在仅仅是借助 XMake 来帮助我们打包项目,在这里我们以 SDL2 为例,但 XMake 不仅限于此,它有十分充足的仓库,你几乎能在里面找到所有你想要使用的 C/C++ 库。
安装
安装指示在官方页面上写的非常清楚,就不在这里多写了
镜像加速
XMake 的 C/C++ 包都在 GitHub 上,访问速度很慢,甚至在一定程度上使用了魔法的情况下还会出现下载失败的情况,十分影响使用体验,因此十分有必要借助 github 镜像加速这个过程,在命令行中运行以下命令来使用 xmake 内部提供的镜像:
xmake g --proxy_pac=github_mirror.lua
工具链
XMake 支持几乎所有常见的工具链,XMake 也会在你的环境中探测使用它认为最合适的工具链,特别地,Windows 下建议使用 MSVC 构建工具链,它最稳定。
XMake,启动!
所有的前置步骤已经完成,下面就可以来开始打包项目了!我们以 SDLTest 项目名为例,来创建并编译一个新的SDL2项目吧!
首先在指定的文件夹路径下使用 xmake 命令创建一个名为 SDLTest 的新项目:
xmake create SDLTest
它会在当前路径下创建一个名为 SDLTest 的文件夹,并在该文件夹中生成以下目录结构:

其中 src/ 文件夹是存放项目代码的位置,.gitignore 文件与 git 有关,在此不多说,而 xmake.lua 文件便是这个 xmake 项目的配置文件,它的默认内容如下:

你会发现,事实上我们还并没有将 SDL2 添加到我们的配置文件中作为编译内容的一部分,这一步其实很容易,我们只需要在仓库中找到对应的库名,并像这样添加到配置当中即可:

保存!在 SDLTest/ 文件夹路径的命令行中输入:
xmake
即可启动编译!此时,xmake 会自动检查平台、工具链和需要安装的内容,并询问是否需要安装:

输入 y 并回车,xmake 便会使用指定的工具链编译对应的库并安装到全局(xmake的安装位置)。
此时,我们已经准备好编译运行我们的 SDL2 程序了!
我在 Gitee 上随便找了一个 SDL2 编写的 tetris项目,并将代码拷贝到了 src 文件夹,并且这些文件正好适合 xmake.lua 的 add_files 命令
那么,编译,启动!
xmake
xmake run

使用 xmake 编译的项目也不需要考虑动态链接库的问题, xmake 考虑到了这一点,它将链接库也一起带了进去,让可执行文件点开即玩,非常顺畅!
vscode includePath 配置(可选)
虽然 xmake 官网上提供了详尽的解决方案,但是实际用起来效果并不尽如人意,相信使用 vscode 的大部分同学都使用了 C/C++ 插件吧?
Ctrl + Shift + P运行C/C++ 编辑配置:UI命令,并编辑includePath,添加 xmake 的安装路径/packages/////include ,然后再去看你的代码,就会发现 include 解析成功啦