xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。
本文我们会详细介绍下如何在项目构建过程中切换debug/release等常用构建模式,以及自定义其他编译模式。
调试和发布模式
通常,如果我们是通过xmake create
命令创建的项目,会在xmake.lua里面自动添加一行编译规则的配置,如下:
add_rules("mode.release", "mode.debug")
target("hello")
set_kind("binary")
add_files("src/*.c")
通过add_rules
接口,我们默认添加了release和debug两个常用的内置规则,它们会在编译的时候附带上对应模式相关的一些编译flags,来开启优化用于发布或者调试编译。
如果仅仅执行了xmake
命令,没有额外的配置,那么默认就会是release编译,等价于:
$ xmake f -m release
$ xmake
[ 0%]: ccache compiling.release src/main.cpp
[100%]: linking.release test
build ok!
如果我们要切换到debug编译模式,只需要:
$ xmake f -m debug
$ xmake
[ 0%]: ccache compiling.debug src/main.cpp
[100%]: linking.debug test
build ok!
上面的-m/--mode=
参数就是用来设置编译模式,会跟mode.release
和mode.debug
这两个规则做关联。
那么,他们是如何关联上的呢?我们可以先来看下这两个规则的内部实现:
rule("mode.debug")
after_load(function (target)
if is_mode("debug") then
if not target:get("symbols") then
target:set("symbols", "debug")
end
if not target:get("optimiz