虽然 xmake 提供了默认的编译模式规则可以让大家很方便的通过 xmake f -m debug
切换各种编译模式,不过有时候内置的 mode.debug
,mode.release
等编译模式不一定完全满足需求。这个时候,就需要大家自己来判断当前处于什么编译模式,然后自己去控制编译优化、调试符号等各种编译选项的开启和关闭。
下面,我们将尝试完全使用 is_mode()
来自定义判断配置 debug 和 release 编译模式下的一些特定编译选项,实现和内置的 add_rules("mode.release", "mode.debug")
编译规则一样的控制效果。
继续修改 condition/xmake.lua 文件的配置为如下所示。
if is_mode("release") then
set_symbols("hidden")
set_optimize("fastest")
set_strip("all")
elseif is_mode("debug") then
set_symbols("debug")
set_optimize("none")
end
target("test")
set_kind("binary")
add_files("src/*.cpp")
这次我们通过 is_mode()
来条件判断当前编译模式是否为 debug 还是 release,然后分别设置不同的编译选项,并且把这些选项设置到全局根域,这样可以对所有 target 生效,也就避免了每个 target 都去重复设置一遍