is_plat():判断目标平台 is_arch():判断指令架构 is_host():判断宿主平台(指编写代码的平台,前面提到的接口是判断可执行程序运行的平台) is_mode():判断编译模式 综合案例: if is_mode("release") then set_symbols("hidden") set_optimize("fastest") set_strip("all") elseif is_mode("debug") then...
其中,-p cross用于指定当前的平台是交叉编译平台,--sdk=用于指定交叉工具链的根目录。 注:我们也可以指定-p linux平台来配置交叉编译,效果是一样的,唯一的区别是额外标识了linux平台名,方便xmake.lua里面通过is_plat("linux")来判断平台。 这个时候,xmake会去自动探测gcc等编译器的前缀名cross:arm-linux-armeabi...
if is_plat("macosx", "iphoneos", "android", "linux") then end 否则如果用lua的原生语法的话,虽然也可以,但是会很臃肿,例如: if is_plat("macosx") or is_plat("iphoneos") or is_plat("android") or is_plat("linux") then end 除了is_xxx系列,像:add_xxxs这种后缀有s的复数api,都是可以传...
注:我们也可以指定-p linux平台来配置交叉编译,效果是一样的,唯一的区别是额外标识了linux平台名,方便xmake.lua里面通过is_plat("linux")来判断平台。 这个时候,xmake会去自动探测gcc等编译器的前缀名cross:arm-linux-armeabi-,并且编译的时候,也会自动加上链接库和头文件的搜索选项,例如: -I/home/toolchains_s...
is_plat判断当前编译平台>= 2.0.1 is_host判断当前主机环境操作系统>= 2.1.4 is_mode判断当前编译模式>= 2.0.1 is_kind判断当前编译类型>= 2.0.1 is_config判断指定配置是否为给定的值>= 2.2.2 has_config判断配置是否启用或者存在>= 2.2.2 has_package判断依赖包是否被启用或者存在>= 2.2.3 ...
我们通过is_plat()判断,如果当前编译目标平台是linux或者macosx,那么target会额外增加-DYYY宏定义。 全局配置 我们在target("demo")下面的所有配置,都属于demo这个target子域,并不是全局的,所以你会看到通常配置上都加了缩进,就是为了凸显作用域的影响范围。
注:我们也可以指定-p linux平台来配置交叉编译,效果是一样的,唯一的区别是额外标识了linux平台名,方便xmake.lua里面通过is_plat("linux")来判断平台。 这个时候,xmake会去自动探测gcc等编译器的前缀名cross:arm-linux-armeabi-,并且编译的时候,也会自动加上链接库和头文件的搜索选项,例如: ...
但是这样的话,一些windows平台特有的设置就丢失了,而且用户也没法使用if is_plat("windows") then来判断windows平台做特定的设置。 其实平台和工具链是完全可以独立开来的,新版本经过重构后,即使是windows平台以及其他任何平台,也可以方便快速的切换到clang, llvm等其他工具链。
我们通过is_plat()判断,如果当前编译目标平台是linux或者macosx,那么target会额外增加-DYYY宏定义。 全局配置 我们在target("demo")下面的所有配置,都属于demo这个target子域,并不是全局的,所以你会看到通常配置上都加了缩进,就是为了凸显作用域的影响范围。
if package:is_plat("windows", "mingw") and not package:config("shared") then component:add("links", "freetype") component:add("syslinks", "opengl32", "gdi32", "user32", "advapi32") end end) on_component("window", function (package, component) ...